我的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>
答案 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" />
结果: