如何修改Android Spinner模式DatePicker的文本外观?
修改Spinner模式DatePicker的文本外观
Spinner模式的DatePicker内部由多个NumberPicker控件组成,直接给DatePicker设置android:textAppearance不会生效——这个属性无法传递给内部的NumberPicker。要修改文本外观,得通过自定义NumberPicker样式,再在DatePicker的主题里引用该样式。
步骤1:定义NumberPicker的自定义样式
创建专门针对NumberPicker的样式,在这里配置你需要的文本外观属性:
<style name="AppNumberPicker" parent="@android:style/Widget.NumberPicker"> <!-- 设置目标文本外观 --> <item name="android:textAppearance">?textAppearanceLabelSmall</item> <!-- 可选:额外设置文本颜色、大小等属性 --> <item name="android:textColor">?colorOnSurface</item> <item name="android:textSize">14sp</item> </style>
步骤2:修改DatePicker的主题样式
在你的AppDatePicker样式中添加numberPickerStyle属性(兼容不同Android版本,同时配置带和不带android:前缀的属性),引用刚才定义的NumberPicker样式:
<style name="AppDatePicker"> <item name="android:colorControlNormal">?colorPrimary</item> <!-- 适配原生Android框架的NumberPicker样式 --> <item name="android:numberPickerStyle">@style/AppNumberPicker</item> <!-- 适配Material Design库的兼容属性(如果使用Material组件) --> <item name="numberPickerStyle">@style/AppNumberPicker</item> </style>
步骤3:保持布局不变
你的DatePicker布局无需修改,依然使用配置好的主题即可:
<DatePicker android:layout_width="wrap_content" android:layout_height="wrap_content" android:calendarViewShown="false" android:datePickerMode="spinner" android:spinnersShown="true" android:theme="@style/AppDatePicker" />
这样设置后,DatePicker内部的Spinner(本质是NumberPicker)就会应用你定义的文本外观样式了。
内容的提问来源于stack exchange,提问作者Mustafa Tatarhan
相关产品推荐
相关产品推荐

