2013-07-07 36 views
4

在我的應用程序中,我沒有任何問題使用Theme.Holo和Theme.Holo.Light。當使用Holo主題並單擊DialogPreference/ListPreference時,彈出的對話框也以Holo爲主題。 Holo.Light也一樣。但是,當使用由Holo.Light派生的自定義主題對PreferencesActivity進行樣式設置時,所有對話框均以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

*但是,當使用由Holo.Light派生的自定義主題對PreferencesActivity進行樣式設置時,所有對話框都以Holo.Light。*爲主題,並且您希望發生什麼特別是從Theme.Holo擴展而來。 Light.Dialog'!??對於'DialogPrefrence',首選項由'dialogPreferenceStyle'聲明,它指向'Preference.Holo.DialogPreference'。這種風格是有限的,所以你需要製作自己的'DialogPreference'。 – Luksprog

回答

0

我已經澄清的問題,但不能要求他們,因爲率低。所以:
1.您的第一個樣式是否正常工作?
2.您是肯定的,那主題@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,這意味着他們應用哪個主題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> 

colorPrimarycolorPrimaryDarkcolorAccentAppTheme是我想已經應用到對話框以及顏色。

請注意,我需要android:windowMinWidthMinor來防止對話框水平摺疊。

相關問題