如何更改日期选择器中的文本大小?

Posted

技术标签:

【中文标题】如何更改日期选择器中的文本大小?【英文标题】:How to change textsize in datepicker? 【发布时间】:2012-07-28 11:41:54 【问题描述】:

datepicker 中的默认文本大小对于我的应用来说太大了。我已经看到了一种建议更改它的方法here,但是寻找嵌套在 datepicker 类中的文本视图似乎很笨重且容易出错。

有更好/更清洁的方法吗?

【问题讨论】:

【参考方案1】:

将主题设置为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_
            android:layout_/>

然后像这样在styles.xml 中定义NumberPickerStyle,指定android:textSize -

<style name="NumberPickerStyle">
        <item name="android:textSize">@dimen/number_picker_text_size</item>
</style>

【讨论】:

【参考方案2】:

更改 datepicker/timepicker/numberpicker 字体大小的最简单方法是自定义主题。

在样式文件中,通过以下方式设置默认字体大小。

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="android:textSize">22sp</item>
</style> 

【讨论】:

工作得很好!感谢您的快速解决方案。 但它使项目中的所有默认字体为22sp,我建议这不是一个好的解决方案【参考方案3】:

Sean 的方法在选择器本身的 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>

【讨论】:

【参考方案4】:

使用下面的代码:

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);

【讨论】:

对于 android 4.1+,1- "getChildAt(0)" 对我有用而不是 "getChildAt(1)" ,2- 当你旋转起来或旋转时文本大小会变回来,这对我没有帮助全部 我强烈建议不要使用这个解决方案。 getChildAt(1) 因为当库内视图的顺序发生变化时它可能会变砖。可能在一个版本上工作并被不同的实现破坏【参考方案5】:

Sean 的代码有效。但它也改变了所有其他组件的字体大小(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

【讨论】:

【参考方案6】:

使用下面的代码

 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);

【讨论】:

以上是关于如何更改日期选择器中的文本大小?的主要内容,如果未能解决你的问题,请参考以下文章

更改日期选择器后如何立即清除时间选择器中的内容?

如何在引导日期选择器中更改日期格式(dd-mmm-yyyy)

如何在日期时间选择器对话框中更改天数的文本大小?

如何在 extjs 日期字段或日期选择器中访问更改月份事件

我如何在 jquery 日期选择器中制作一个清晰的按钮

不能在另一个日期选择器中更改日期选择器参数?