我该如何更改下拉框的背景颜色?

3

如何更改下拉菜单的背景颜色?

snapshot

要更改黑色样式的颜色。

如何为下拉列表弹出窗口更改样式颜色?

我想将黑色背景颜色更改为白色。 我该如何更改?

spinner

<Spinner
    android:id="@+id/spinner"
    android:layout_width="100dp"
    android:layout_marginTop="1dp"
    android:layout_height="wrap_content"
    android:background="@drawable/spinner_bg"
    android:layout_marginLeft="1dp"/>
 

spinnerbg.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <color android:color="@color/InputBg1" />
    </item>
    <item android:gravity="center_vertical|right" android:right="8dp">
        <layer-list>
            <item android:width="12dp" android:height="12dp" android:background="#fff" android:gravity="center" android:bottom="10dp">
                <rotate
                    android:fromDegrees="45"
                    android:toDegrees="45">
                    <shape android:shape="rectangle">
                        <solid android:color="#ffffff" />
                        <stroke android:color="#ffffff" android:width="1dp"/>
                    </shape>
                </rotate>
            </item>
            <item android:width="20dp" android:height="10dp" android:bottom="21dp" android:background="#fff" android:gravity="center">
                <shape android:shape="rectangle">
                    <solid android:color="@color/InputBg1"/>
                </shape>
            </item>
        </layer-list>
    </item>
</layer-list>
9个回答

4
尝试这样做...在res/values/styles.xml中更改样式:-
<resources>
<style name="AppBaseTheme" parent="android:Theme.Light">
</style>

<style name="AppTheme" parent="AppBaseTheme">
    <item name="android:spinnerDropDownItemStyle">@style/mySpinnerItemStyle</item>
</style>

<style name="mySpinnerItemStyle" parent="@android:style/Widget.Holo.DropDownItem.Spinner">
    <item name="android:textColor">@android:color/white</item>
</style>


我应该在哪里包含这个样式? - user6313669

3
您可以在xml中像这样设置旋转器的背景颜色:
android:background="YOUR_HEX_COLOR_CODE"

如果您使用下拉菜单和微调器,可以像这样设置其背景颜色:

android:popupBackground="YOUR_HEX_COLOR_CODE"

改变文本颜色,我建议使用自定义的文本布局。

在这个文件中,给文本设置你自己定制的颜色和尺寸。

spinner_item.xml

<?xml version="1.0" encoding="utf-8"?>

<TextView  
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"
    android:textSize="20sp"
    android:gravity="left"  
    android:textColor="YOUR_HEX_COLOR_CODE"         
    android:padding="5dip"
    />

现在使用这个文件来展示你的旋转选择项,例如:
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.spinner_item,list);

您不需要设置下拉资源。它只会使用spinner_item.xml来在下拉列表中显示您的项目。


我正在使用自定义的下拉菜单spinnerbg.xml。 如果我使用android:popupBackground="YOUR_HEX_COLOR_CODE",那么整个弹出窗口将是白色,项目文本将不可见,如:每天,每月等。 - user6313669
以下是关于编程的内容,请将其翻译成中文。只返回翻译后的文本: - Shabbir Dhangot
我该如何改变文本颜色? - user6313669
使用android:popupBackground="#ffffff",弹出窗口背景是白色的,但文本颜色并不符合更新的答案。 - user6313669

2
您可以在<Spinner/>内添加以下代码来更改弹出窗口的背景。"最初的回答"
android:popupBackground="COLOR_CODE"

现在代码应该如下所示:

最初的回答

<Spinner
    android:id="@+id/spinner"
    android:layout_width="100dp"
    android:layout_marginTop="1dp"
    android:layout_height="wrap_content"
    android:background="@drawable/spinner_bg"
    android:layout_marginLeft="1dp"
    android:popupBackground="COLOR_CODE"
/>

2

以下是关于自定义下拉列表的几个事项:

spinner_bg.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>

<color android:color="@color/InputBg1" />
</item>
<item android:gravity="center_vertical|right" android:right="8dp">
<layer-list>
<item android:width="12dp" android:height="12dp"  android:gravity="center" android:bottom="10dp">
    <rotate
        android:fromDegrees="45"
        android:toDegrees="45">
        <shape android:shape="rectangle">
            <solid android:color="#ffffff" />
            <stroke android:color="#ffffff" android:width="1dp"/>
        </shape>
    </rotate>
</item>
<item android:width="20dp" android:height="10dp" android:bottom="21dp" android:gravity="center">
    <shape android:shape="rectangle">
        <solid android:color="@color/InputBg1"/>
    </shape>
</item>
</layer-list>
</item>
</layer-list>

spinner_item.xml

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/text1"
    style="@style/spinnerItemStyle"
    android:maxLines="1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textColor="#ffffff"
    android:ellipsize="marquee"
    android:textAlignment="inherit"/>

spinner_dropdown_item.xml

<?xml version="1.0" encoding="utf-8"?>
<CheckedTextView 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/text1"
    style="@style/spinnerItemStyle"
    android:maxLines="1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:textColor="#000000"
    android:ellipsize="marquee"/>

旋转器
<Spinner
android:id="@+id/spinner"
android:layout_width="100dp"
android:popupBackground="#ffffff"
android:layout_marginBottom="1dp"
android:layout_height="wrap_content"
android:textColor="#ffff"
style="@style/spinnerItemStyle"
android:background="@drawable/spinner_bg"
android:layout_marginLeft="1dp" />

style.xml

<style name="spinnerItemStyle" parent="@android:style/Widget.Holo.DropDownItem.Spinner">
    <item name="android:textColor">#000000</item>
</style>

创建Spinner适配器
ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this, R.layout.spinner_item, categories);
// Drop down layout style - list view with radio button
dataAdapter.setDropDownViewResource(R.layout.spinner_dropdown_item);

snapshot


1
在res/values/styles.xml文件夹中创建类似以下样式。
<style name="spinnerItemStyle" parent="@android:style/Widget.Holo.DropDownItem.Spinner">
    <item name="android:textColor">Put text color code here</item>
    <item name="android:background">Put background color code here</item>
</style>  

应用于您的 spinner

<Spinner
    android:id="@+id/spinner"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    style="@style/spinnerItemStyle"/>

我正在使用自定义的Spinner,如上所示的spinnerbg.xml代码。但它没有起作用。 - user6313669

0
请在您的 styles.xml 中添加以下内容,以更改下拉菜单的背景颜色和文本颜色。
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
      <!-- Spinner style -->
    <item name="android:spinnerStyle">@style/AppTheme.spinnerStyle</item>
    <!-- Spinner dropdown style-->
     <item name="android:spinnerDropDownItemStyle">@style/AppTheme.spinnerDropDownItemStyle</item>

</style>
<style name="AppTheme.spinnerStyle" parent="@android:style/Widget.Material.Light.Spinner">
    <item name="android:textColor">@android:color/white</item>
    <item name="android:background">@color/colorPrimary</item>
</style>
<style name="AppTheme.spinnerDropDownItemStyle" parent="@android:style/Widget.Material.DropDownItem.Spinner">
        <item name="android:textColor">@android:color/white</item>
        <item name="android:background">@color/colorPrimary</item>
</style>

在你的 AndroidManifest.xml 文件中添加主题。(检查 android:theme 的值)
<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">

0

您可以将Spinner包装在RelativeLayout中,并向RelativeLayout添加背景Drawable。代码如下所示。

<RelativeLayout 
 android:layout_width="fill_parent"
 android:layout_height="wrap_content"
 android:background="@drawable/borderbottom_white"<!-- white background with 
  bottom border -->
 android:layout_marginTop="15dp"  >
    <Spinner
    android:id="@+id/postfield_category"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:textSize="16sp"
    android:background="@null"
    android:minHeight="0dp" />
    <ImageView 
     android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_alignParentRight="true"
    android:src="@drawable/arrowspinner" />
</RelativeLayout>

0

如果要更改整个应用程序中 Spinner 项目的背景,请添加 styles.xml

<resources>
    <style name"AppTheme" patent="...">
        <item name="android:spinnerStyle">@style/Widget.AppTheme.Spinner</item>
    </style>

    <style name="Widget.AppTheme.Spinner" parent="Widget.AppCompat.Spinner">
        <!-- color is change form here -->
        <item name="android:popupBackground">#FFFFFF</item>
    </style>
</resources>

0

要更改下拉列表的背景颜色,请在您的styles.xml中的主题中添加android:colorBackground参数。

代码:

<style name="AppTheme" parent="Theme.AppCompat.Light">
    <item name="android:colorBackground">#ff0000</item>
</style>

因此,整体风格得以保留:按下时的效果、圆角等。

屏幕截图:

enter image description here enter image description here


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