【问题标题】:How to change the text color and size of a pop up menu in android?如何更改android中弹出菜单的文本颜色和大小?
【发布时间】:2014-07-30 12:56:44
【问题描述】:

弹出菜单中的文本颜色没有变化,即使样式发生了变化。 背景颜色相对于 styles.xml 中的颜色正在发生变化,但文本颜色和文本大小没有反映。

//Creating the instance of PopupMenu  
PopupMenu popup = new PopupMenu(mContext, holder.im_overflow);      
//Inflating the Popup using xml file  
popup.getMenuInflater().inflate(R.menu.list_overflow_menu, popup.getMenu());     
//registering popup with OnMenuItemClickListener  
popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {      
    @Override
    public boolean onMenuItemClick(MenuItem item) {
        if( item.getTitle().equals("Edit")){
            callEdit();
        } else if( item.getTitle().equals("Export")) {
            callShare();
        } else if( item.getTitle().equals("Delete")) {
            callDelete();
        }
        return true;
    }
});

popup.show();

样式.xml

<style name="AppBaseTheme" parent="@android:style/Theme.Light.NoTitleBar">
</style>

<!-- Application theme. -->
<style name="AppTheme" parent="AppBaseTheme">
    <item name="android:popupMenuStyle">@style/PopupMenu</item>      
</style>

<style name="PopupMenu" parent="@android:style/Widget.PopupMenu">
    <item name="android:popupBackground">@android:color/white</item>
    <item name="android:textColor">#FF01F0</item>
    <item name="android:textSize">12sp</item>
</style>

但它不会改变文本颜色。

【问题讨论】:

  • 我终于找到了答案。
  • 答案是什么?
  • 是的,答案是什么?

标签: android popupmenu


【解决方案1】:

您可以通过将此代码添加到 styles.xml 并在清单文件中使用来更改文本大小和颜色。对我来说它有效。

<style name="AppTheme" parent="AppBaseTheme">
    <item name="android:popupMenuStyle">@style/PopupMenu</item>
    <item name="android:textAppearanceLargePopupMenu">@style/myPopupMenuTextAppearanceLarge</item>
    <item name="android:textAppearanceSmallPopupMenu">@style/myPopupMenuTextAppearanceSmall</item>
</style>

<style name="PopupMenu" parent="@android:style/Widget.PopupMenu">
    <item name="android:popupBackground">@android:color/white</item>
    <item name="android:textColor">#FF01F0</item>
    <item name="android:textSize">12sp</item>
</style>

<style name="myPopupMenuTextAppearanceSmall" parent="@android:style/TextAppearance.DeviceDefault.Widget.PopupMenu.Small">
    <item name="android:textColor">#545656</item>
    <item name="android:textSize">15sp</item>
</style>

<style name="myPopupMenuTextAppearanceLarge" parent="@android:style/TextAppearance.DeviceDefault.Widget.PopupMenu.Large">
    <item name="android:textColor">#545656</item>
    <item name="android:textSize">25sp</item>    
</style>

【讨论】:

  • 它有助于改变文本样式,但不能改变popupBackground。我必须设置白色背景。
  • 我之前就想通了。几天后,当我看到这个问题得到了很多人的支持,我认为这个答案可能会帮助有需要的人,然后我添加了解决方案。
【解决方案2】:

在我的样式文件中:

       <style name="menuStyle">
           <item name="android:layoutDirection">rtl</item>
           <item name="android:textColor">@color/onyx</item>
           <item name="android:textSize">15sp</item>
           <item name="android:fontFamily">@font/ge_ss_two_light</item>
       </style>

在我的 java 文件中:

        Context myContext = new ContextThemeWrapper(context, R.style.menuStyle);
        MenuBuilder menuBuilder = new MenuBuilder(context);
        MenuInflater inflater = new MenuInflater(context);
        inflater.inflate(R.menu.options_menu, menuBuilder);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-09
    • 1970-01-01
    • 2014-08-30
    • 2013-01-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多