Как изменить размер текста в DatePicker?

Размер текста по умолчанию в DatePicker слишком велик для моего приложения. Я видел способ, предложенный изменить его здесь, но поиск текстовых представлений, вложенных в класс datepicker, кажется неуклюжим и подверженным ошибкам.

Есть ли лучший / более чистый способ сделать это?

7 ответов

Установка темы в 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 в styles.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> 

Подход Шона сделал некоторые сбои в пользовательском интерфейсе самого средства выбора на случай, если имеется несколько средств выбора, и я думаю, что не идеально применять размер текста ко всем компонентам под средством выбора. Ниже приводится то, что я использовал, и он прекрасно работает без каких-либо глюков интерфейса.

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

Код Шона работает. но он также меняет размер шрифта для всех других компонентов (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

Используйте код ниже:

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

Я использовал следующий CustomDateAndTimePicker. Это очень легко настроить. В этом различные варианты, такие как дата, месяц, год, часы и минуты имеют свои собственные средства выбора номера. Таким образом, вы можете настроить размер текста, цвет и другие стили. Вы можете добавить свой собственный номер выбора для вашего пользовательского использования

Используйте код ниже

 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);
Другие вопросы по тегам