Android微调器自定义布局
我想用自定义样式自定义我的微调器。Android微调器自定义布局
微调
<Spinner android:id="@+id/my_spinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/activity_vertical_margin"
android:layout_marginLeft="@dimen/activity_horizontal_margin"
android:layout_marginRight="@dimen/activity_horizontal_margin"
android:layout_marginTop="@dimen/activity_vertical_margin"
app:layout_constraintTop_toBottomOf="@id/expense_amount"
app:layout_constraintLeft_toRightOf="parent"
app:layout_constraintRight_toLeftOf="parent"
android:elevation="3dp"
/>
这是我的styles.xml文件。
styles.xml
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <item name="android:spinnerStyle">@style/AppTheme.spinnerStyle</item>
<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>
这给了我纺纱看起来像这样:
我想增加一个下拉箭头。 当我更改微调器代码为下拉箭头时,所有的textcolor和背景颜色都会丢失。
微调代码来显示的下拉箭头
<Spinner android:id="@+id/my_spinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/activity_vertical_margin"
android:layout_marginLeft="@dimen/activity_horizontal_margin"
android:layout_marginRight="@dimen/activity_horizontal_margin"
android:layout_marginTop="@dimen/activity_vertical_margin"
app:layout_constraintTop_toBottomOf="@id/expense_amount"
app:layout_constraintLeft_toRightOf="parent"
app:layout_constraintRight_toLeftOf="parent"
android:background="@android:drawable/btn_dropdown"
/>
我如何能留住我的主题,下拉箭头沿着?
P.S.我不擅长截获Linux机器上的截图。
回答:
这是Android的正常行为:
微调有它自己默认的背景,当您使用styles.xml
定制它,它遵循并变成蓝色。然后在代码中,再次将微调器的android:background
设置为@android:drawable/btn_dropdown
,因此它会覆盖您的样式,因为layout xml中的属性的优先级高于样式中的优先级。
你没有背景显示的下拉箭头,使用此:
解决方案一:
<Spinner android:id="@+id/spinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:theme="@style/ThemeOverlay.AppCompat.Light"
android:spinnerMode="dropdown" />
,并在你的java文件
spinner = (Spinner) view.findViewById(R.id.spinner); ArrayAdapter adapter = ArrayAdapter.createFromResource(this, R.array.spinner_data, android.R.layout.simple_spinner_dropdown_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
解决方法二
您需要在Spinner外面包装一个RelativeLayout。这种替换您<Spinner>
:
<RelativeLayout android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/spinner_bg">
<Spinner
android:id="@+id/spinner"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/ThemeOverlay.AppCompat.Light"
android:spinnerMode="dropdown" />
</RelativeLayout>
然后创建一个自定义背景,选择背景色为您的微调:
spinner_bg.xml
<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:top="8dp" android:bottom="8dp">
<shape>
<solid android:color="@color/colorPrimary" />
<corners android:radius="2dp"/>
<stroke
android:width="1dp"
android:color="@color/colorPrimary" />
<padding
android:top="16dp"
android:bottom="16dp"
android:left="8dp"
android:right="16dp"/>
</shape>
</item>
</layer-list>
以上是 Android微调器自定义布局 的全部内容, 来源链接: utcz.com/qa/259586.html