java - Android - 从 DatePickerDialog 更改线条颜色

标签 java android datepicker themes

我使用 Theme.Holo.Light.Dialog.NoActionBar.MinWidth 作为我的 DatePickerDialog,但我想更改蓝色,以便将其放入红色。

我成功更改了文本的颜色,但我没有找到如何更改线条的颜色。

enter image description here

我尝试了很多东西,这是我目前的代码:

<style name="DialogTheme" parent="android:Theme.Holo.Light.Dialog.NoActionBar.MinWidth">
        <item name="colorAccent">@color/smoothRed</item>
        <item name="colorPrimary">@color/smoothRed</item>
        <item name="android:textColor">@color/smoothRed</item>
        <item name="textColor">@color/smoothRed</item>
        <item name="android:background">@null</item>
        <item name="android:textColorPrimary">@color/colorPrimary</item>
    </style>

最佳答案

您可以尝试这个解决方案。对我有用。

public class MainActivity extends AppCompatActivity implements DatePickerDialog.OnDateSetListener {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    final Calendar calendar = Calendar.getInstance();
    int year = calendar.get(Calendar.YEAR);
    int month = calendar.get(Calendar.MONTH);
    int day = calendar.get(Calendar.DAY_OF_MONTH);


    DatePickerDialog datepickerdialog = new DatePickerDialog(this,
            AlertDialog.THEME_HOLO_DARK,this,year,month,day);

    colorizeDatePicker(datepickerdialog.getDatePicker());

    datepickerdialog.show();


}


    public static void colorizeDatePicker(DatePicker datePicker) {
        Resources system = Resources.getSystem();
        int dayId = system.getIdentifier("day", "id", "android");
        int monthId = system.getIdentifier("month", "id", "android");
        int yearId = system.getIdentifier("year", "id", "android");

        NumberPicker dayPicker = (NumberPicker) datePicker.findViewById(dayId);
        NumberPicker monthPicker = (NumberPicker) datePicker.findViewById(monthId);
        NumberPicker yearPicker = (NumberPicker) datePicker.findViewById(yearId);

        setDividerColor(dayPicker);
        setDividerColor(monthPicker);
        setDividerColor(yearPicker);
    }

    private static void setDividerColor(NumberPicker picker) {
        if (picker == null)
            return;

        final int count = picker.getChildCount();
        for (int i = 0; i < count; i++) {
            try {
                Field dividerField = picker.getClass().getDeclaredField("mSelectionDivider");
                dividerField.setAccessible(true);
                ColorDrawable colorDrawable = new ColorDrawable(picker.getResources().getColor(R.color.colorAccent));
                dividerField.set(picker, colorDrawable);
                picker.invalidate();
            } catch (Exception e) {
                Log.w("setDividerColor", e);
            }
        }

}

@Override
public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {

}
}

关于java - Android - 从 DatePickerDialog 更改线条颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51545752/

相关文章:

java - 小代码,不携带值

java - JPA 基于集合元素匹配进行选择,或空集合

java - 用于检查前缀绑定(bind)到的命名空间的 XPath

android - 账户管理器 - "Permission is only granted to system apps"

android - Parse.com 获取所有用户名

java - 在Java中下载同名附件而不覆盖

global-variables - 我可以在我的 Android 应用程序类中创建自定义全局方法吗?

php - FPDF:不为日历选定日期生成报告数据

javascript - 根据第一个选择的日期限制日期范围

jquery UI - 将日期添加到选定日期