也談 在 Toolbar 中插入 ComboBox

2 篇文章 0 订阅
2 篇文章 0 订阅

Google 一下, 你能輕易的找到 在 Toolbar 中插入 ComboBox 的方法, 大多就是下面的方法

 

沒錯, 它的確可行, 但.......你還得祈禱: 在程序的運行過程中, 用戶的計算機不得休眠(待命/Suspend)

一旦恢復過來, 你將會發現, 啊,  Toolbar 亂套了.

WHY?
我深信Google無所不能! 於是Google & Google & Google & Google...............
然而, 我找不到答案.

只得自己檢測/分析:
原來是因為 toolbar.SetButtonInfo(index, nID, TBBS_SEPARATOR, nWidth) 語句改變了toolbar's button的sizes. 而系統Resume的時候, 會按這個改變了的size重置 toolbar's buttons

解決辦法很簡單, 插入ComboBox後, 立即重新設置一下Toolbutton的Size即可.



題外話:
我女兒自從會Google/Baidu後, 基本不向我發問了.不用回答"為什麼月亮走我也走"之類的問題的確省心啊, 我樂得清閒. 然而, 前幾天, 我居然發現, 她做家庭作業也要去Google/Baidu. 唉..........

在XML布局文件添加`Toolbar`(也叫`AppBarLayout`的一部分)通常包含以下几个步骤: 1. 首先,在`<layout>`元素下,定义一个新的布局(例如`:layout_toolbar`),因为`Toolbar`经常与其他控件配合使用,可以封装在一起: ```xml <layout xmlns:android="http://schemas.android.com/apk/res/android"> <data> <!-- 定义绑定变量 --> <variable name="toolbarViewModel" type="com.example.YourViewModelClass" /> </data> <androidx.appcompat.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:theme="@style/ThemeOverlay.AppCompat.ActionBar"> <!-- 添加其他样式属性,比如颜色、图标 --> <TextView android:text="@{toolbarViewModel.title}" android:layout_gravity="center" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </androidx.appcompat.widget.Toolbar> </layout> ``` 这里我们使用了数据绑定技术,`toolbarViewModel.title`会根据你的ViewModel的相应字段动态更新。 2. 然后,在你的主`Activity`或`Fragment`的布局文件,引用这个新的布局并添加到适当的位置: ```xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" ...> <!-- 使用包含Toolbar的布局 --> <include layout="@layout/:layout_toolbar" /> <!-- 后续的内容... --> </LinearLayout> ``` 3. 最后,如果是在`Activity`使用,你需要在`onCreate()`或`onStart()`方法设置`Toolbar`为`SupportActionBar`,并在需要的地方显示/隐藏它: ```java Toolbar toolbar = findViewById(R.id.toolbar); setSupportActionBar(toolbar); getSupportActionBar().setDisplayShowTitleEnabled(true); // 显示标题 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值