安卓中Spinner主题为黑色

12

我试图更改工具栏下拉式菜单的主题,但奇怪的是这并没有发生。 只要我点击下拉菜单,它总是出现为黑色。 我想将背景设置为灰色,文本设置为黑色。

我没有任何操作栏。 我通过工具栏来设置所有内容。

因此,我尝试了以下方法:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:local="http://schemas.android.com/apk/res-auto"
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/colorPrimary"
    android:minHeight="?attr/actionBarSize"
    local:popupTheme="@style/ThemeOverlay.AppCompat.Light"
    local:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

    <RelativeLayout
        android:id="@+id/relativeLayoutID"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical">

        <TextView
            android:id="@+id/toolbar_title"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerVertical="true"
            android:layout_gravity="left|center"
            android:text="@string/register_title"
            android:textColor="@color/whiteText"
            android:textSize="@dimen/text_size_medium" />

        <Spinner
            android:id="@+id/spinner"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:minWidth="80dp"
            android:spinnerMode="dropdown"
            android:visibility="gone" />

    </RelativeLayout>

</android.support.v7.widget.Toolbar>

样式的xml:

 <resources>

<style name="Theme.default" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="md_widget_color">@color/numbertext</item>
    <item name="android:colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="android:colorPrimary">@color/colorPrimary</item>
    <item name="android:windowContentOverlay">@drawable/toolbar_dropshadow</item>
    <item name="android:windowBackground">@android:color/white</item>
    <item name="android:editTextColor">@android:color/background_dark</item>
    <item name="android:textColor">@android:color/background_dark</item>
    <item name="colorControlNormal">@android:color/background_dark</item>
    <item name="colorControlActivated">@color/orangeText</item>
    <item name="colorControlHighlight">@color/orangeText</item>
    <item name="android:statusBarColor">@color/colorPrimary</item>

</style>

<style name="Widget.MyApp.HeaderBar.Spinner" parent="Widget.AppCompat.Light.Spinner.DropDown.ActionBar">
    <item name="android:background">?android:selectableItemBackground</item>
    <item name="android:dropDownSelector">?android:selectableItemBackground</item>
    <item name="android:divider">@color/blackText</item>
    <item name="android:overlapAnchor">true</item>
</style></resources>

更新:

新增以下主题:

<style name="MyDarkToolbarStyle" parent="@style/Widget.AppCompat.Spinner.DropDown.ActionBar">
        <item name="background">?android:selectableItemBackground</item>
        <item name="android:popupBackground">@color/layoutbackground</item>
        <item name="android:dropDownSelector">?android:selectableItemBackground</item>
        <item name="android:divider">@color/blackText</item>
        <item name="android:overlapAnchor">true</item>
    </style>

然后将其应用到旋转器:

<Spinner
            android:id="@+id/spinner"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:minWidth="80dp"
style="@style/MyDarkToolbarStyle"
            android:spinnerMode="dropdown"
            android:visibility="gone" />

通过上述设置,我可以更改下拉菜单的背景颜色,但是在应用主题到下拉列表之前,我无法在选择时获得涟漪效果。


如果我将主题更改为浅色,那么我的下拉箭头和导航抽屉水平线就会变成深色。我该如何将它们更改为白色? - Sanjana Nair
抱歉,我不理解上一条评论。 - Sascha Kolberg
三条水平线(导航抽屉图标)是黑色的吗? - Sanjana Nair
好的,现在我明白了(我想)。你使用 local:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" 只是为了获取白色前景色,对吗?你尝试过使用自定义的 "@style/Theme.AppCompat.Light" 作为 local:popupTheme 而不是 ThemeOverlay 吗? - Sascha Kolberg
@SaschaKolberg:没有,我还没试过。我该怎么做?我应该把它们放在哪里? - Sanjana Nair
显示剩余2条评论
1个回答

22

只需像为工具栏添加内容一样,将以下内容添加到您的 Spinner 中:

local:popupTheme="@style/ThemeOverlay.AppCompat.Light"
local:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"

因此,您最终的Spinner将如下所示:

<Spinner
    android:id="@+id/spinner"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:minWidth="80dp"
    android:spinnerMode="dropdown"
    local:popupTheme="@style/ThemeOverlay.AppCompat.Light"
    local:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
    android:visibility="gone" />

太好了,谢谢。我已经尝试过同样的方法了,它运行得很好。你觉得你能帮我解决这个主题问题吗:http://stackoverflow.com/questions/36347659/android-theme-issue-using-alertdialog-builder/36348062#36348062 - Sanjana Nair
不好意思,我还没有使用过那些功能。如果这个答案对你有用,请标记为已接受,以便帮助其他人。 - Ali Kazi
1
@SanjanaNair 如果这个答案对你有用,请接受它。不要只是提问然后离开,而是要奖励那些花费精力帮助你的人。 - Franklin
4
我把“本地”的说法换成了“应用程序”。 - B.shruti

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接