【发布时间】:2020-02-21 18:15:21
【问题描述】:
我想将时间字体如下更改为 42sp。 TimePickerDialog可以更改字体大小吗?
【问题讨论】:
标签: java android android-layout android-view android-timepicker
我想将时间字体如下更改为 42sp。 TimePickerDialog可以更改字体大小吗?
【问题讨论】:
标签: java android android-layout android-view android-timepicker
TimePickerDialog 的设计方式不是,允许客户更改字体大小。因此,强烈建议不要这样做。
不过,如果出于某种特定原因需要这样做,您可以坚持以下棘手且不可靠的方式:
val mTimePickerField = TimePickerDialog::class.java.getDeclaredField("mTimePicker")
mTimePickerField.isAccessible = true
val mTimePicker = mTimePickerField.get(timePickerDialog) as TimePicker
val hours: TextView? = mTimePicker.findViewById(resources.getIdentifier("android:id/hours", "id", packageName))
val separator: TextView? = mTimePicker.findViewById(resources.getIdentifier("android:id/separator", "id", packageName))
val minutes: TextView? = mTimePicker.findViewById(resources.getIdentifier("android:id/minutes", "id", packageName))
hours?.textSize = 12f
separator?.textSize = 12f
minutes?.textSize = 12f
你会得到什么:
time_picker_header_material.xml 是 TimePickerDialog 将膨胀的实际标题布局,因此您可以根据需要使用与小时/分隔符/分钟相同的方法来增强 am/pm 字段。
【讨论】:
默认情况下时间选择器有自己的样式,但是如果你定义了其他自定义的文本视图样式,那么时间选择器的标题会受到影响。所以要解决这个问题,你必须给自定义样式如下
打开你的 style 或 theme.xml 文件
在样式标签内添加以下项目
<item name="android:timePickerDialogTheme">@style/customTimePickerDialogTheme</item>
然后在默认样式标签外(资源内)添加如下样式
<style name="customTimePickerDialogTheme" parent="@style/Theme.AppCompat.Light.Dialog">
<item name="android:headerBackground">#ff80cbc4</item>
</style>
通过这种方式,我们实现了默认的自定义时间选择器设计。现在您可以使用 customTimePickerDialogTheme 中的其他属性更改字体、texsize、颜色。
【讨论】: