Ravitheja
Ravitheja

Reputation: 781

How to change the text color and size of a pop up menu in android?

Text color in pop up menu is not changing even changed in styles. Background color is changing with respect to the color in styles.xml but the text color and text size are not reflecting.

//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();

Styles.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>

But it is not changing the text color.

Upvotes: 15

Views: 21525

Answers (2)

Hagar Magdy
Hagar Magdy

Reputation: 313

In my style file:

       <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>

In my java file:

        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);

Upvotes: 2

Ravitheja
Ravitheja

Reputation: 781

You can change the text size and color by adding this code to styles.xml and use it in manifest file. For me it worked.

<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>

Upvotes: 23

Related Questions