如何在Android中更改时间选择器字体颜色?

时间:2015-10-08 17:49:50

标签: android android-styles android-timepicker

您好我想更改时间选择器的字体颜色。我在Stackoverflow本身搜索了一些其他答案。但我无法帮助自己。

我的目标API是19.这是我尝试过的事情列表。

  1. 我尝试在values-v11和values-v14文件夹中添加Styles.xml中的样式。以下是代码
  2. <!-- language: lang-xml --> <style name="MyTimePicker" parent="@android:style/Widget.Holo.DatePicker"> <item name="android:textColor">@color/main_font</item> </style>
    我也尝试在values文件夹中添加它。但我得到以下错误。

      

    @android:style / Widget.Holo.DatePicker需要API级别11(当前最小值为8)

    我为我的TimePicker添加了样式,如

    <TimePicker
            android:id="@+id/alarm_timePicker"
            style="@style/MyTimePicker"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:layout_centerHorizontal="true" />
    

    什么都没改变。

    2。我尝试在我的活动中添加Stackoverflow中的一些代码。以下是代码。

    public static boolean setNumberPickerTextColor(TimePicker numberPicker) {
        final int count = numberPicker.getChildCount();
        int color = R.color.main_font;
        for (int i = 0; i < count; i++) {
          View child = numberPicker.getChildAt(i);
          if (child instanceof EditText) {
            try {
              Field selectorWheelPaintField =
                  numberPicker.getClass().getDeclaredField("mSelectorWheelPaint");
              selectorWheelPaintField.setAccessible(true);
              ((Paint) selectorWheelPaintField.get(numberPicker)).setColor(color);
              ((EditText) child).setTextColor(color);
              numberPicker.invalidate();
              return true;
            } catch (NoSuchFieldException e) {
              //Log.w("setNumberPickerTextColor", e);
            } catch (IllegalAccessException e) {
              //Log.w("setNumberPickerTextColor", e);
            } catch (IllegalArgumentException e) {
              //Log.w("setNumberPickerTextColor", e);
            }
          }
        }
        return false;
        }
    

    当我尝试调试它时,我将内容视图设置为

    时出错
      

    尝试在空对象引用上调用虚方法'void android.widget.NumberPicker.setOnValueChangedListener(android.widget.NumberPicker $ OnValueChangeListener)'

2 个答案:

答案 0 :(得分:0)

我犯了同样的错误。我想您自己找到了答案,但对于其他人:尝试将父级样式从@android:style/Widget.Holo.DatePicker更改为@android:style/Widget.Holo.TimePicker

@android:style/Widget.Material.Light.DatePicker的相同技巧,将其更改为@android:style/Widget.Material.Light.TimePicker

答案 1 :(得分:0)

文本颜色是主题的textColorPrimary和textColorSecondary值。所以你可以创建这样的风格:

<style name="myTheme" parent="Theme.AppCompat.NoActionBar">

    <item name="android:textColorPrimary">#e90d8a</item>
    <item name="android:textColorSecondary">@color/white_primary_text</item>

   // The rest of your customization.

</style>

在您的活动中使用setTheme方法。