Android TimePickerDialog material 设计颜色
Android TimePickerDialog material design color
我在我的应用程序中使用时间选择器对话框。我还使用 appcompat 为我的应用 material 设计主题。然而,该对话框保留默认的蓝绿色强调色(我的强调色是浅蓝色)。
所以在我的代码中,我尝试将对话框主题设置为我自己的主题,它可以正常工作,接受它使其全屏显示
mTimePicker = new TimePickerDialog(ctx, R.style.AppTheme new TimePickerDialog.OnTimeSetListener() {->}, hour, minute, DateFormat.is24HourFormat(context));
有谁知道如何设置 TimePickerDialog 以使用我的颜色而不是默认颜色正确显示?
这可以从 xml(仅限 5.0+)
轻松实现
v21/themes.xml
<resources xmlns:android="http://schemas.android.com/apk/res/android">
<style name="Theme"
parent="MyTheme.Base">
<item name="android:dialogTheme">@style/Theme.Dialog</item> <!-- TimePicker dialog -->
<item name="android:alertDialogTheme">@style/Theme.Dialog</item> <!-- Alert dialog -->
</style>
<style name="Theme.Dialog"
parent="android:Theme.Material.Light.Dialog">
<item name="android:colorAccent">@color/...</item>
<item name="android:colorPrimary">@color/...</item>
<item name="android:colorPrimaryDark">@color/...</item>
</style>
</resources>
编辑
请注意,从 Android 支持库 22.1.0 开始,有一个新的 AppCompatDialog
可用! http://android-developers.blogspot.de/2015/04/android-support-library-221.html
您可以使用以下方法覆盖颜色:
TimePickerDialog timePickerDialog = new TimePickerDialog(this,
R.style.themeOnverlay_timePicker, //theme overlay
timeSetListener,
hours,minutes,true);
与:
<style name="themeOnverlay_timePicker" parent="@style/ThemeOverlay.MaterialComponents.Dialog">
<item name="colorControlActivated">@color/....</item>
<item name="colorAccent">@color/....</item>
<item name="android:textColorPrimary">@color/.....</item>
<item name="android:textColorSecondary">@color/.....</item>
</style>
如果您使用的是 AppCompat 主题,请使用 ThemeOverlay.AppCompat.Dialog
作为父主题。
我在我的应用程序中使用时间选择器对话框。我还使用 appcompat 为我的应用 material 设计主题。然而,该对话框保留默认的蓝绿色强调色(我的强调色是浅蓝色)。
所以在我的代码中,我尝试将对话框主题设置为我自己的主题,它可以正常工作,接受它使其全屏显示
mTimePicker = new TimePickerDialog(ctx, R.style.AppTheme new TimePickerDialog.OnTimeSetListener() {->}, hour, minute, DateFormat.is24HourFormat(context));
有谁知道如何设置 TimePickerDialog 以使用我的颜色而不是默认颜色正确显示?
这可以从 xml(仅限 5.0+)
轻松实现v21/themes.xml
<resources xmlns:android="http://schemas.android.com/apk/res/android">
<style name="Theme"
parent="MyTheme.Base">
<item name="android:dialogTheme">@style/Theme.Dialog</item> <!-- TimePicker dialog -->
<item name="android:alertDialogTheme">@style/Theme.Dialog</item> <!-- Alert dialog -->
</style>
<style name="Theme.Dialog"
parent="android:Theme.Material.Light.Dialog">
<item name="android:colorAccent">@color/...</item>
<item name="android:colorPrimary">@color/...</item>
<item name="android:colorPrimaryDark">@color/...</item>
</style>
</resources>
编辑
请注意,从 Android 支持库 22.1.0 开始,有一个新的 AppCompatDialog
可用! http://android-developers.blogspot.de/2015/04/android-support-library-221.html
您可以使用以下方法覆盖颜色:
TimePickerDialog timePickerDialog = new TimePickerDialog(this,
R.style.themeOnverlay_timePicker, //theme overlay
timeSetListener,
hours,minutes,true);
与:
<style name="themeOnverlay_timePicker" parent="@style/ThemeOverlay.MaterialComponents.Dialog">
<item name="colorControlActivated">@color/....</item>
<item name="colorAccent">@color/....</item>
<item name="android:textColorPrimary">@color/.....</item>
<item name="android:textColorSecondary">@color/.....</item>
</style>
如果您使用的是 AppCompat 主题,请使用 ThemeOverlay.AppCompat.Dialog
作为父主题。