【问题标题】:How to change MenuItem background in android如何在 android 中更改 MenuItem 背景
【发布时间】: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


【解决方案1】:

从AndroidManifest.xml试试这个风格

<style name="ActionBarTheme" parent="ChooseYourParentStyle">
    <item name="android:popupMenuStyle">@style/MyStyle.PopupMenu_Style</item>
</style>

<style name="MyStyle.PopupMenu_Style" parent="ChooseYourParentStyle.ListPopupWindow">
    <item name="android:popupBackground">@drawable/CreateCustomDrawable</item>
</style>

【讨论】:

  • 已经做了,没用。我想也许选项菜单不直接使用 popupMenuStyle。
猜你喜欢
  • 1970-01-01
  • 2016-04-25
  • 1970-01-01
  • 1970-01-01
  • 2014-04-14
  • 1970-01-01
  • 2014-01-13
  • 1970-01-01
  • 2022-01-09
相关资源
最近更新 更多