Android 为什么不是';我的风格没有应用到弹出菜单中吗?

Android 为什么不是';我的风格没有应用到弹出菜单中吗?,android,Android,根据,您不能直接设置弹出菜单样式,这似乎与 它声明您可以在弹出菜单构造函数中指定样式。据我所知,我需要指定的属性是“android:popupBackground”和“android:dropDownWidth”。但是,以下内容只是删除了默认样式,并且没有应用所需的颜色或宽度: styles.xml: <style name="popup"> <item name="android:popupBackground">@color/material_blue_gre

根据,您不能直接设置弹出菜单样式,这似乎与

它声明您可以在弹出菜单构造函数中指定样式。据我所知,我需要指定的属性是“android:popupBackground”和“android:dropDownWidth”。但是,以下内容只是删除了默认样式,并且没有应用所需的颜色或宽度:

styles.xml:

<style name="popup">
    <item name="android:popupBackground">@color/material_blue_grey_800</item>
    <item name="android:dropDownWidth">350dp</item>
</style>
activity_a.xml:

<RelativeLayout    xmlns:android="http://schemas.android.com/apk/res/android"
           xmlns:tools="http://schemas.android.com/tools"
           android:layout_width="match_parent"
           android:layout_height="match_parent"
           android:paddingLeft="@dimen/activity_horizontal_margin"
           android:paddingRight="@dimen/activity_horizontal_margin"
           android:paddingTop="@dimen/activity_vertical_margin"
           android:paddingBottom="@dimen/activity_vertical_margin"
           tools:context=".activities.ActivityA">
  <Button
      android:id="@+id/popupBtn"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_alignParentTop="true"
      android:layout_alignParentRight="true"
      android:text="Press to open menu"/>
</RelativeLayout>


您不能以编程方式应用样式,但可以通过主题来应用样式:类似的答案可以在此处找到:

将此添加到您的AppTheme

<item name="android:popupMenuStyle">@style/popup</item>
<item name="popupMenuStyle">@style/popup</item>
@style/popup
@样式/弹出窗口

祝你好运

您可以在主题中声明样式,如下所示:

    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <!-- Other styles -->

        <!-- PopUpMenu styles -->
        <item name="popupMenuStyle">@style/Widget.App.PopupMenu</item>
    </style>

<!-- Widget PopUpMenu Style-->
    <style name="Widget.App.PopupMenu" parent="Widget.AppCompat.Light.PopupMenu">
        <!-- Whatever Styles Put Here-->
    </style>

@style/Widget.App.PopupMenu

既然为样式提供了构造函数,为什么我们不能以编程方式应用样式呢。
    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <!-- Other styles -->

        <!-- PopUpMenu styles -->
        <item name="popupMenuStyle">@style/Widget.App.PopupMenu</item>
    </style>

<!-- Widget PopUpMenu Style-->
    <style name="Widget.App.PopupMenu" parent="Widget.AppCompat.Light.PopupMenu">
        <!-- Whatever Styles Put Here-->
    </style>