【发布时间】:2016-01-22 07:25:06
【问题描述】:
我想在 android 中更改 single menuItem background 但它不起作用。我所做的,在MenuItem 中设置appcompat supported actionview 并尝试设置background 的actionview。
xml
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<item android:id="@+id/action_my_balance"
android:title="@string/my_balance"
app:showAsAction="never"
app:actionViewClass="android.widget.ImageButton"
/>
</menu>
源代码
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.my_menu, menu);
ImageButton balanceMenu = (ImageButton) MenuItemCompat.getActionView(menu.findItem(R.id.action_my_balance));
balanceMenu.setBackgroundColor(Color.RED);
balanceMenu.invalidate();
return true;
}
但它根本不起作用。也可以在没有设置自定义 actionview 的情况下在 MenuItem 上获取视图吗?
【问题讨论】:
-
我先尝试不使用 invalidate 但它不起作用,所以我使用 invalidate 进行了测试但也没有用。
-
我已经试过了,它在 5.0.0 中崩溃了。说不能设置工厂,因为它已经设置(某处)。顺便说一句,我想弄清楚为什么我的代码(方法)不起作用。
-
我不确定您的方法为什么不起作用,但我认为将 app:showAsAction="never" 与 app:actionViewClass 一起使用有点矛盾="whatever" 您是要设置操作栏 ImageButton 还是要更改溢出菜单中的项目?
-
那么我认为你必须使用自定义弹出窗口而不是菜单
标签: android menuitem android-appcompat optionmenu