TimePickerDialogの色を変更する

AndroidでTimePickerDialog(android.app.TimePickerDialog)の色を色々と変更しようとして調べたのでメモ。

基本的にはthemes.xmlでstyleを定義して、その定義をTimePickerDialogのコンストラクタに渡すことで色を変更できる。

下記例の通り、文字盤以外は個別に色を指定することに成功。文字盤だけは色の指定方法が不明。

themes.xml

    <style name="ThemeOverlay.MyApp.TimePicker" parent="@style/Theme.AppCompat.Light.Dialog">
        <item name="android:windowBackground">#888888</item>
        <item name="android:colorControlActivated">#FFFF00</item>
        <item name="android:colorControlNormal">#FF0000</item>
        <item name="android:colorAccent">#00FF00</item>
        <item name="android:textColorPrimary">#0000FF</item>
        <item name="android:textColorPrimaryInverse">#FF00FF</item>
        <item name="android:textColorSecondaryInverse">#FFFFFF</item>
    </style>

TimePickerDialogの生成コード

TimePickerDialog(
	mContext, R.style.ThemeOverlay_MyApp_TimePicker, { _, mHour: Int, mMinute: Int ->
		mTime.value = "$mHour:$mMinute"
	}, mHour, mMinute, false
)


 

 

styleタグでparentに@style/Theme.AppCompat.DayNight.Dialogを指定するとダークモードの場合に文字盤とダイアログ上部の背景色が自動的にダークグレイに切り替わるようになる。

    <style name="ThemeOverlay.MyApp.TimePicker" parent="@style/Theme.AppCompat.DayNight.Dialog">
        <item name="android:windowBackground">#888888</item>
        <item name="android:colorControlActivated">#FFFF00</item>
        <item name="android:colorControlNormal">#FF0000</item>
        <item name="android:colorAccent">#00FF00</item>
        <item name="android:textColorPrimary">#0000FF</item>
        <item name="android:textColorPrimaryInverse">#FF00FF</item>
        <item name="android:textColorSecondary">#FFFFFF</item>
    </style>


ダークモードで表示

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です