如何在 Android 中以编程方式更改 DatePicker 和 TimePicker 的样式?

And*_*tas 1 android datepicker timepicker

我创建了一个 TabHost,其中包含 2 个带有 DatePicker 和 TimePicker 的选项卡:

TabHost dayTabHost = (TabHost) layout.findViewById(R.id.tabHost);
dayTabHost.setup();

TabHost.TabSpec dayTabSpec = dayTabHost.newTabSpec("Day");
dayTabSpec.setIndicator("Day");
dayTabSpec.setContent(new TabHost.TabContentFactory() {
                public View createTabContent(String arg) {
                    DatePicker datePicker = new DatePicker(getBaseContext());
                    return datePicker;
                }
            });
dayTabHost.addTab(dayTabSpec);

TabHost.TabSpec timeTabSpec= dayTabHost.newTabSpec("Time");
timeTabSpec.setIndicator("Time");
timeTabSpec.setContent(new TabHost.TabContentFactory() {
                public View createTabContent(String arg) {
                    TimePicker timePicker = new TimePicker(getBaseContext());
                    return timePicker;
                }
            });
dayTabHost.addTab(timeTabSpec);
Run Code Online (Sandbox Code Playgroud)

我不知道如何将这些选择器的颜色更改为在这种情况下应用程序中使用的不同样式。

And*_*tas 5

我找到了自己的答案,而且非常简单。当实例化 TimePicker 和 DatePicker 时,将带有您想要的自定义样式的新 ContextThemeWrapper 作为参数发送,以便更改样式。

样式.xml

<style name="CustomPickerTheme">
    <item name="colorAccent">@color/Red</item>
</style>
Run Code Online (Sandbox Code Playgroud)

MainActivity.class

TimePicker timePicker = new TimePicker(new ContextThemeWrapper(MainActivity.this, R.style.CustomPickerTheme));
DatePicker datePicker = new DatePicker(new ContextThemeWrapper(MainActivity.this, R.style.CustomPickerTheme));
Run Code Online (Sandbox Code Playgroud)