Android Spinner对话框弹出背景

时间:2018-07-24 12:46:25

标签: android background dialog spinner

我的Android应用程序已将popupbackground设置为可绘制的xml。但是,弹出对话框仍然无法显示我设置的颜色。如何解决这个问题?

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".CountrySelectorActivity">


    <Spinner
        android:id="@+id/search_spinner1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:background="@color/black"
        android:popupBackground="@drawable/spinner_background"
        android:spinnerMode="dialog"
        />

    <Spinner
        android:id="@+id/search_spinner2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="2"
        android:background="@color/black"
        android:popupBackground="@drawable/spinner_background"
        android:spinnerMode="dialog"/>

</LinearLayout>

@ drawable / spinner_background.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape android:shape="rectangle">
            <solid android:color="@color/green"/>

        </shape>
    </item>

</selector>

enter image description here

enter image description here

Spinner activity code https://stackoverflow.com/questions/51495271/android-kotlin-spinner-working-for-api-23-but-not-working-for-api-21

2 个答案:

答案 0 :(得分:0)

使用自定义微调器背景可绘制对象制作样式。然后将样式作为属性添加到微调器。最后,以编程方式更改活动或片段中的微调框弹出背景颜色。以下方法对我有用:

<style name="SpinnerTheme" parent="android:Widget.DeviceDefault.Spinner">
    <item name="android:background">@drawable/spinner_background</item>
    <item name="android:padding">8dp</item>
    <item name="android:paddingTop">5dp</item>
    <item name="android:textSize">18sp</item>
    <item name="android:textColor">@android:color/white</item>
    <item name="android:paddingBottom">5dp</item>
    <item name="android:paddingRight">15dp</item>
</style>

将其放置在您的xml中,用于每个微调框(REMOVE android:popupBackground =“ @ drawable / spinner_background”& android:spinnerMode =“ dialog”):

<Spinner
    android:id="@+id/search_spinner2"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_weight="2"
    android:background="@color/black"
    style="@style/SpinnerTheme"/>

然后在您的活动或片段中,以编程方式设置弹出式背景颜色:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
                spinner.setPopupBackgroundResource(R.color.yourColor);
            }

以下是示例的链接:https://www.oodlestechnologies.com/blogs/Custom-Spinner-In-Android

答案 1 :(得分:0)

使用AndroidX并使用AppCompatSpinner,您可以执行以下操作:

文件: styles.xml

<style name="MyPopUpTheme">
    <item name="android:background">@color/background_spinner</item>
    <item name="android:padding">5dp</item>
    <item name="android:textColor">@color/colorAccent</item>
    <item name="android:textStyle">bold</item>

</style>

文件:您的片段或活动

<androidx.appcompat.widget.AppCompatSpinner
    android:id="@+id/spinner_years"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_marginTop="8dp"
    android:layout_marginEnd="50dp"
    android:background="@drawable/spinner_bg"
    android:padding="15dp"
    android:theme="@style/MyPopUpTheme" />

结果:

enter image description here