datepicker 中的默认文本大小对我的应用程序来说太大了。我已经看到了一种建议在此处更改它的方法,但是四处寻找嵌套在 datepicker 类中的文本视图似乎很笨重且容易出错。
有更好/更清洁的方法吗?
datepicker 中的默认文本大小对我的应用程序来说太大了。我已经看到了一种建议在此处更改它的方法,但是四处寻找嵌套在 datepicker 类中的文本视图似乎很笨重且容易出错。
有更好/更清洁的方法吗?
将主题设置为DatePicker
布局并添加android:textSize
到它对我有用。
在您的布局的 xml 中添加一个DatePicker
应用主题,如下所示 -
<DatePicker xmlns:android="http://schemas.android.com/apk/res/android"
android:theme="@style/NumberPickerStyle"
android:datePickerMode="spinner"
android:calendarViewShown="false"
android:layout_gravity="center_horizontal"
android:layout_height="wrap_content"
android:layout_width="wrap_content"/>
然后像这样定义NumberPickerStyle
instyles.xml
指定android:textSize
-
<style name="NumberPickerStyle">
<item name="android:textSize">@dimen/number_picker_text_size</item>
</style>
更改 datepicker/timepicker/numberpicker 字体大小的最简单方法是自定义主题。
在样式文件中,通过以下方式设置默认字体大小。
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="android:textSize">22sp</item>
</style>
肖恩的方法在选择器本身的 UI 中产生了一些故障,以防有多个选择器,我认为将文本大小应用于选择器下的所有组件并不完美。下面是我用过的,它完美无缺,没有任何 UI 故障。
<style name="PickerTheme" parent="Theme.AppCompat.NoActionBar">
<item name="android:editTextStyle">@style/PickerEditText</item>
</style>
<style name="PickerEditText" parent="ThemeOverlay.AppCompat.Dark">
<item name="android:textSize">24sp</item>
</style>
使用以下代码:
ViewGroup childpicker = (ViewGroup)datePicker.findViewById(Resources.getSystem().getIdentifier("month", "id", "android"));
EditText mornthEt = (EditText)childpicker.getChildAt(1);// month widget
//change textsize and textcolor for mornthEt
mornthEt.setTextSize(30);
mornthEt.setTextColor(Color.GREEN);
肖恩的代码有效。但它也在改变所有其他组件的字体大小(textViews,按钮等......)所以这是解决方案。
为时间选择器创建不同的样式并将其用于时间选择器主题。
<style name="my_time_picker_style">
<item name="android:textSize">24sp</item>
</style>
并在你的时间选择器上使用它
android:theme="@style/my_time_picker_style"
看视频,我是怎么做的https://youtu.be/JMJ2ujhk9c0
使用下面的代码
DatePicker picker = (DatePicker)findViewById(R.id.dp_date);
ViewGroup childpicker
= (ViewGroup)
findViewById(Resources.getSystem().getIdentifier("month" /*rest is:
day, year*/, "id", "android"));
EditText textview = (EditText)
picker.findViewById(Resources.getSystem().getIdentifier("timepicker_input",
"id", "android"));
textview.setTextSize(30);
textview.setTextColor(Color.GREEN);