300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > android更改menu字体颜色 Android动态修改menu颜色

android更改menu字体颜色 Android动态修改menu颜色

时间:2023-07-09 08:18:09

相关推荐

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);

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。