样式化弹出菜单项

时间:2015-10-21 09:37:16

标签: android android-layout android-styles android-popupwindow

我正在尝试设置弹出窗口的项目样式,使它们看起来像是一张下面的按钮列表。唯一的问题是我无法改变弹出项目的任何内容。我试图在我的应用程序样式中设置全局popupMenuStyle,但这没有任何意义。我试图在菜单项上设置actionLayout但仍然没有变化。

如何更改弹出菜单项的样式?

我的菜单:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/test1"
        android:title="Test" />
    <item android:id="@+id/test2"
        android:title="Test 2" />
</menu>

我如何打开弹出菜单:

PopupMenu popupMenu = new PopupMenu(getContext(), mButton);
popupMenu.getMenuInflater().inflate(R.menu.popup_menu, popupMenu.getMenu());
popupMenu.show();

1 个答案:

答案 0 :(得分:0)

尝试将此作为styles.xml文件的一部分:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
        <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">#FFFFFF</item>
        <item name="android:divider">#444444</item>
        <item name="android:dividerHeight">1px</item>
        <item name="android:background">#FFFFFF</item>
    </style>

    <style name="myPopupMenuTextAppearanceSmall" parent="@android:style/TextAppearance.DeviceDefault.Widget.PopupMenu.Small">
        <item name="android:textColor">#000000</item>
        <item name="android:textSize">12sp</item>
        <item name="android:background">#FFFFFF</item>
    </style>

    <style name="myPopupMenuTextAppearanceLarge" parent="@android:style/TextAppearance.DeviceDefault.Widget.PopupMenu.Large">
        <item name="android:textColor">#000000</item>
        <item name="android:textSize">18sp</item>
        <item name="android:background">#FFFFFF</item>
    </style>

</resources>

然后在活动的xml布局文件中添加以下行:

style="@style/AppTheme"

或在AndroidManifest.xml文件中,将其添加到应用程序标记:

android:theme="@style/AppTheme"

这将影响Android在您的应用中呈现弹出菜单的方式。