【问题标题】:How to change ActionBar overflow icon如何更改 ActionBar 溢出图标
【发布时间】:2015-08-27 20:11:46
【问题描述】:

以下是我的风格:

 <style name="AppBaseTheme" parent="Theme.AppCompat.Light">
        <!-- <item name="windowActionBar">false</item> -->
    </style>

    <style name="AppTheme" parent="AppBaseTheme">
        <item name="actionOverflowMenuStyle">@style/OverflowMenu</item>
        <!-- <item name="actionBarStyle">@style/Theme.MyApp.ActionBar</item> -->
    </style>
 <style name="OverflowMenu" parent="Widget.AppCompat.PopupMenu.Overflow">

        <!-- Required for pre-Lollipop. -->
        <item name="overlapAnchor">false</item>

        <!-- Required for Lollipop. -->
        <!-- <item name="android:overlapAnchor">false</item> -->
    </style>

我正在使用 appcompact 支持库中的 ActionBarActivity 来更改溢出按钮的颜色。

  <style name="AppTheme" parent="AppBaseTheme">
        <item name="actionOverflowMenuStyle">@style/OverflowMenu</item>
        <item name="android:actionOverflowButtonStyle">@style/OverFlowStyle</item>

        <!-- <item name="actionBarStyle">@style/Theme.MyApp.ActionBar</item> -->
    </style>

    <style name="OverFlowStyle" parent="Widget.AppCompat.ActionButton.Overflow">
        <item name="android:src">@drawable/ic_empty</item>
    </style>

【问题讨论】:

  • 对于我的应用程序,我只需将 AppTheme Theme.AppCompat.Light.DarkActionBar 的父级更改为 Theme.AppCompat.Light 或相反

标签: android android-actionbar android-actionbar-compat


【解决方案1】:
    <style name="OverFlowStyle" parent="@style/Widget.AppCompat.Light.ActionButton.Overflow">
            <item name="android:src">@drawable/green_overflow</item>
        </style>
    <style name="AppTheme" parent="AppBaseTheme">
    <item name="actionOverflowButtonStyle">@style/OverFlowStyle</item>
            <item name="android:actionOverflowButtonStyle">@style/OverFlowStyle</item>
</style>

【讨论】:

    【解决方案2】:

    正如您样式中的注释所暗示的,棒棒糖需要android: 前缀。您是否也尝试将其添加到 actionOverflowMenuStyle 属性中?

    <item name="android:actionOverflowButtonStyle">@style/OverflowMenu</item>
    <item name="actionOverflowButtonStyle">@style/OverflowMenu</item>
    

    【讨论】:

      【解决方案3】:

      对于

      <style name="AppTheme" parent="AppBaseTheme">
      
               ...
           <item name="actionOverflowButtonStyle">@style/OverFlowStyle</item>
      </style>
      
      <style name="OverFlowStyle" parent="Widget.AppCompat.ActionButton.Overflow">
          <item name="android:src">@drawable/ic_empty</item>
      </style>
      

      【讨论】:

        【解决方案4】:

        使用工具栏,以上方法都不适合我,我不得不通过代码更改它,使用以下:

        public static void setOverflowButtonColor(final Activity activity) {
            final String overflowDescription = activity.getString(R.string.abc_action_menu_overflow_description);
            final ViewGroup decorView = (ViewGroup) activity.getWindow().getDecorView();
            final ViewTreeObserver viewTreeObserver = decorView.getViewTreeObserver();
            viewTreeObserver.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
                @Override
                public void onGlobalLayout() {
                    final ArrayList<View> outViews = new ArrayList<View>();
                    decorView.findViewsWithText(outViews, overflowDescription,
                            View.FIND_VIEWS_WITH_CONTENT_DESCRIPTION);
                    if (outViews.isEmpty()) {
                        return;
                    }
                    TintImageView overflow=(TintImageView) outViews.get(0);
                    overflow.setColorFilter(Color.CYAN);
                    removeOnGlobalLayoutListener(decorView,this);
                }
            });
        }
        

        Complete source.

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-01-26
          • 1970-01-01
          • 1970-01-01
          • 2023-03-05
          • 2014-08-24
          • 2013-08-24
          相关资源
          最近更新 更多