美文网首页
[Android] Toolbar Menu自定义item属性

[Android] Toolbar Menu自定义item属性

作者: seven_Android | 来源:发表于2017-05-12 16:39 被阅读0次

今天在做一个menu的时候,需要改动item的高度和字体大小颜色。搜索了一下很多方法都不管用,最后是结合了 stack overflow 里面几个回答的方法勉强实现效果。最近比较忙,先记录下可以实现的方法,以后再找专门时间好好填坑。

首先对 Android 内部这个弹出menu似乎命名为 OverflowMenu,默认3个点的 more 按钮应该是命名为OverflowButton,但是部分属性却以PopupMenuXXX、PopupXXX、XXXPopup之类格式命名。主要改变item各种属性的方法是:自定义一个 style,然后在 Toolbar 的 Theme 里使用该 style(暂时叫主 style?),比较麻烦的是,这个主 style 的 item 主要引用其他的 style(暂时叫子 style 吧) ,而部分属性看似好像某个子 style 的子属性其实却有另外专门的 item,另外 子 style 的 parent 继承对结果也有影响(无效或者出现某些意想不到的效果)。

下面给出一段可以改动以下属性的代码,相关解释直接在注释里给出好了:

  • 更换弹出menu图标

  • 弹出时不遮拦Toolbar

  • Menu item 的高度

  • Menu item 的背景

  • Menu item 的字体大小颜色

  • Menu item 的分隔线

  <style name="Toolbar.TechStar" parent="ThemeOverlay.AppCompat.Dark">
    <!--修改菜单栏右边三个白点图标-->
    <item name="android:actionOverflowButtonStyle">@style/TechStarOverflowButtonStyle</item>
    <!--ToolBar右边弹出菜单背景色 不遮拦Toolbar-->
    <item name="actionOverflowMenuStyle">@style/techstar.MenuStyle</item>
    <!--Menu item 高度 这里不需要指定style 可直接指定-->
    <item name="android:listPreferredItemHeightSmall">@dimen/height_45dp</item>
    <!-- 分隔线 -->
    <item name="android:dropDownListViewStyle">@style/PopupMenuListView</item>
    <!-- Menu item 文字样式相关 比较迷的一个点  我自己的项目是留下Large两个item其1就可以实现  可能和分辨率或者和建造menu时的选项相关???-->
    <item name="textAppearanceLargePopupMenu">@style/myPopupMenuTextAppearanceLarge</item>
    <item name="android:textAppearanceLargePopupMenu">@style/myPopupMenuTextAppearanceLarge</item>
    <item name="android:textAppearanceSmallPopupMenu">@style/myPopupMenuTextAppearanceSmall</item>
    <item name="textAppearanceSmallPopupMenu">@style/myPopupMenuTextAppearanceSmall</item>
  </style>

  <!--修改菜单栏右边三个白点图标-->
  <style name="TechStarOverflowButtonStyle"
      parent="android:style/Widget.Holo.Light.ActionButton.Overflow">
    <item name="android:src">@drawable/ic_more</item>
  </style>

  <!--ToolBar右边弹出菜单背景色  overlapAncho属性选false可不遮拦Toolbar-->
  <style name="techstar.MenuStyle" parent="Widget.AppCompat.Light.PopupMenu.Overflow">
    <item name="overlapAnchor">false</item>
    <item name="android:popupBackground">#00FF00</item>
  </style>

  <!-- 分隔线 -->
  <style name="PopupMenuListView" parent="@android:style/Widget.Holo.ListView.DropDown">
    <item name="android:divider">#FF0000</item>
    <item name="android:dividerHeight">2dp</item>
  </style>

  <!-- Menu item 文字样式  对应item的large或者small 选择parent 否则无效-->
  <style name="myPopupMenuTextAppearanceSmall"
      parent="@style/TextAppearance.AppCompat.Light.Widget.PopupMenu.Small">
    <item name="android:textColor">#FF0000</item>
  </style>

  <!-- Menu item 文字样式  对应item的large或者small 选择parent 否则无效-->
  <style name="myPopupMenuTextAppearanceLarge"
      parent="@style/TextAppearance.AppCompat.Light.Widget.PopupMenu.Large">
    <item name="android:textColor">#FF0000</item>
  </style>

相关链接:
https://gist.github.com/mistrydarshan99/c52ba8345901bcc58442

http://stackoverflow.com/questions/31044370/reduce-menu-items-width-height-and-textview-size

相关文章

网友评论

      本文标题:[Android] Toolbar Menu自定义item属性

      本文链接:https://www.haomeiwen.com/subject/uoaztxtx.html