2013-07-07 3 views
4

В моем приложении я использовал Theme.Holo и Theme.Holo.Light без каких-либо проблем. Когда используется тема Holo, и я нажимаю на DialogPreference/ListPreference, всплывающее диалоговое окно также имеет тематику с Holo. То же самое для Holo.Light. Но когда PreferencesActivity оформляется моей специальной темой, которая получена из Holo.Light, все диалоги тематики с Holo.Light. Я думаю, что в своей теме мне не хватает чего-то. Может ли кто-нибудь мне помочь? Большое спасибо!Как стиль DialogPreference с пользовательской темой?

Вот моя тема Код:

<?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> 
+0

* Но когда PreferencesActivity оформлена моей специальной темой, которая получена из Holo.Light, все диалоги тематически оформлены с помощью Holo.Light. * - и что вы ожидаете от этого, особенно в том случае, если вы расширили его от 'Theme.Holo. Light.Dialog'! ?? Для 'DialogPrefrence' предпочтение объявляется' dialogPreferenceStyle', которое указывает на 'Preference.Holo.DialogPreference'. Этот стиль ограничен, поэтому вам нужно сделать свой собственный «DialogPreference». – Luksprog

ответ

0

Я уточняющий вопросы, но не может просить их из-за низкую скорость. Итак:
1. Правильно ли работает ваш первый стиль?
2.Are Вы уверены, что тема @android: стиль/Theme.Holo.Light.Dialog имеет все элементы, вы заявили в TimePickerDialogFragmentGreen Например:

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


3. Пытались ли вы идею, предложенную Luksprog

И, наконец, я использовал что-то подобное, чтобы создать свой стиль для моих EditTexts:

<style name="EditTextStyle" parent="@style/Indents"> 
<item name="android:textColor">@android:color/black</item> 
<item name="android:background">@android:color/white</item> 
<item name="android:textColorHint">@android:color/darker_gray</item> 
<item name="android:textSize">14sp</item> 
</style> 
<style name="Indents" parent="@style/Margins"> 
    <item name="android:paddingBottom">@dimen/activity_vertical_padding</item> 
    <item name="android:paddingTop">@dimen/activity_vertical_padding</item> 
</style> 
<style name="Margins"> 
    <item name="android:layout_marginTop">@dimen/activity_vertical_margin </item> 
    <item name="android:layout_marginBottom">@dimen/activity_vertical_margin </item> 
    <item name="android:layout_marginLeft">@dimen/activity_horizontal_margin </item> 
    <item name="android:layout_marginRight">@dimen/activity_horizontal_margin </item> 
</style> 
2

this rather unformatted but otherwise nice answer я нашел.

Суть в том, что DialogPreference s является AlertDialog s, созданный без the theme parameter, что означает, что они применяются, когда-либо THEME 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> 

colorPrimary, colorPrimaryDark и colorAccent в AppTheme были цвета, которые я хотел бы применять к диалогу, а также.

Обратите внимание, что мне необходимо было android:windowMinWidthMinor, чтобы диалоговое окно не свернулось горизонтально.

Смежные вопросы