gpt4 book ai didi

android - 如何使用自定义主题设置 DialogPreference 的样式?

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:56:49 25 4
gpt4 key购买 nike

在我的应用程序中,我使用 Theme.Holo 和 Theme.Holo.Light 没有任何问题。当使用 Holo 主题并且我单击 DialogPreference/ListPreference 时,弹出的对话框也以 Holo 为主题。 Holo.Light 也一样。但是,当 PreferencesActivity 使用我的自定义主题(派生自 Holo.Light)设置样式时,所有对话框都以 Holo.Light 为主题。我想我的主题中缺少一些东西。谁能帮帮我?非常感谢!

这是我的主题代码:

  <?xml version="1.0" encoding="utf-8"?>

<!-- Generated with http://android-holo-colors.com -->
<resources xmlns:android="http://schemas.android.com/apk/res/android">

<style name="GreenTheme" parent="android:Theme.Holo.Light">

<item name="android:editTextBackground">@drawable/edit_text_holo_light</item>

<item name="android:autoCompleteTextViewStyle">@style/AutoCompleteTextViewGreenTheme</item>

<item name="android:listChoiceIndicatorMultiple">@drawable/btn_check_holo_light</item>

<item name="android:listChoiceIndicatorSingle">@drawable/btn_radio_holo_light</item>

<item name="android:buttonStyle">@style/ButtonGreenTheme</item>

<item name="android:imageButtonStyle">@style/ImageButtonGreenTheme</item>

<item name="android:dropDownSpinnerStyle">@style/SpinnerGreenTheme</item>

<item name="android:tabWidgetStyle">@style/TabWidgetGreenTheme</item>

<item name="android:progressBarStyleHorizontal">@style/ProgressBarGreenTheme</item>

<item name="android:seekBarStyle">@style/SeekBarGreenTheme</item>

<item name="android:buttonStyleToggle">@style/ToggleGreenTheme</item>

<item name="android:listChoiceBackgroundIndicator">@drawable/list_selector_holo_light</item>

<item name="android:activatedBackgroundIndicator">@drawable/activated_background_holo_light</item>

<item name="android:fastScrollThumbDrawable">@drawable/fastscroll_thumb_holo</item>

<item name="android:actionBarStyle">@style/ActionBar.Solid.Greenactionbar</item>

<item name="android:buttonBarButtonStyle">@style/ButtonBarButtonStyleGreenTheme</item>

<item name="android:preferenceStyle">@style/TimePickerDialogFragmentGreen</item>
</style>

<style name="TimePickerDialogFragmentGreen" parent="@android:style/Theme.Holo.Light.Dialog">
<item name="android:editTextBackground">@drawable/edit_text_holo_light</item>

<item name="android:autoCompleteTextViewStyle">@style/AutoCompleteTextViewGreenTheme</item>

<item name="android:listChoiceIndicatorMultiple">@drawable/btn_check_holo_light</item>

<item name="android:listChoiceIndicatorSingle">@drawable/btn_radio_holo_light</item>

<item name="android:buttonStyle">@style/ButtonGreenTheme</item>

<item name="android:imageButtonStyle">@style/ImageButtonGreenTheme</item>

<item name="android:dropDownSpinnerStyle">@style/SpinnerGreenTheme</item>

<item name="android:tabWidgetStyle">@style/TabWidgetGreenTheme</item>

<item name="android:progressBarStyleHorizontal">@style/ProgressBarGreenTheme</item>

<item name="android:seekBarStyle">@style/SeekBarGreenTheme</item>

<item name="android:buttonStyleToggle">@style/ToggleGreenTheme</item>

<item name="android:listChoiceBackgroundIndicator">@drawable/list_selector_holo_light</item>

<item name="android:activatedBackgroundIndicator">@drawable/activated_background_holo_light</item>

<item name="android:fastScrollThumbDrawable">@drawable/fastscroll_thumb_holo</item>

<item name="android:actionBarStyle">@style/ActionBar.Solid.Greenactionbar</item>

<item name="android:buttonBarButtonStyle">@style/ButtonBarButtonStyleGreenTheme</item>
</style>
</resources>

最佳答案

我找到了 this rather unformatted but otherwise nice answer .

要点是 DialogPreference 是在没有 the theme parameter 的情况下创建的 AlertDialog ,这意味着它们应用 android:alertDialogTheme 指向的主题。

所以我这样扩展了我的主题,使对话框成为主题:

<resources>

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light">
<item name="colorPrimary">@color/yellow_500</item>
<item name="colorPrimaryDark">@color/yellow_a700</item>
<item name="colorAccent">@color/purple_400</item>
<item name="android:alertDialogTheme">@style/DialogTheme</item>
</style>

<style name="DialogTheme" parent="Theme.AppCompat.Light.Dialog">
<item name="colorPrimary">@color/yellow_500</item>
<item name="colorPrimaryDark">@color/yellow_a700</item>
<item name="colorAccent">@color/purple_400</item>
<item name="android:windowMinWidthMinor">@android:dimen/dialog_min_width_minor</item>
</style>

</resources>

AppTheme 中的 colorPrimarycolorPrimaryDarkcolorAccent 是我想要应用到对话框也是如此。

请注意,我需要 android:windowMinWidthMinor 来防止对话框水平折叠。

关于android - 如何使用自定义主题设置 DialogPreference 的样式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17510628/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com