android更改menu字体颜色,Android动态修改menu颜色
昨晚有人在群里問怎么動態修改menu的顏色
關鍵對方還說在網上百度了3個小時了,依然沒有解決問題
我知道,輪到我出手了😀
如果你是復制粘貼黨,那么下面的代碼拿走即可👇
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
int itemId = item.getItemId();
for (int i = 0; i < toolBar.getChildCount(); i++) {
View childAt = toolBar.getChildAt(i);
if (childAt instanceof ActionMenuView) {
ActionMenuView itemView = (ActionMenuView) childAt;
for (int j = 0; j < itemView.getChildCount(); j++) {
ActionMenuItemView menuItemView = (ActionMenuItemView) itemView.getChildAt(j);
int id = menuItemView.getId();
if (itemId==id){
menuItemView.setTextColor(Color.BLUE);
}else {
menuItemView.setTextColor(Color.BLACK);
}
}
}
}
return super.onOptionsItemSelected(item);
}
如果你還想學習一點東西,可以從這里往下看
其實很簡單
當時我也從網上隨便搜索了一下,憑感覺沒有發現比較靠譜的方案。只好自己去翻源碼
我本來的思路是通過反射來更改文字顏色,但是在翻源碼的過程中我發現如果我要精確的找到那個textView,這個工作量有點大了。
后來就想著,我只要搞清楚toolBar中的樹形結構,然后找到顯示menu文字的textView就行了。
既然要找toolBar的樹形結構,那么遍歷toolBar是最好的選擇
在遍歷過程中找到textView或者其子類,然后去改變文字的顏色,看看有沒有效果。
省時省力省心。
代碼遂成!
question:如果我們想默認選中某個menu,該怎么辦捏?
福利代碼,拿走不謝👇
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
Log.d(TAG, "onPrepareOptionsMenu: ");
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
for (int i = 0; i < toolBar.getChildCount(); i++) {
View childAt = toolBar.getChildAt(i);
if (childAt instanceof ActionMenuView) {
ActionMenuView itemView = (ActionMenuView) childAt;
for (int j = 0; j < itemView.getChildCount(); j++) {
ActionMenuItemView menuItemView = (ActionMenuItemView) itemView.getChildAt(j);
int id = menuItemView.getId();
if (id==R.id.menu_manage){
menuItemView.setTextColor(Color.BLUE);
}
}
}
}
}
}, 100);
return super.onPrepareOptionsMenu(menu);
}
總結
以上是生活随笔為你收集整理的android更改menu字体颜色,Android动态修改menu颜色的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android qq分享自动弹出,史上最
- 下一篇: android sina oauth2.