我正在使用主题来自定义设置对话框的外观.首选项以 XML定义,并由PreferenceFragment填充.附着片段的方式基本上如 developer guide中所述. 通过应用于托管活动的自定义主题,它可以完全自定义
通过应用于托管活动的自定义主题,它可以完全自定义第一个屏幕:
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setTheme(R.style.Theme_Preferences_Dialog); ...
随风格:
<style name="Theme.Preferences.Dialog" parent="@android:style/Theme.Holo.Light.Dialog"> <item name="android:colorBackground">#fff0f0f0</item> <item name="android:background">#fff0f0f0</item> <item name="android:divider">#ffe0e0e0</item> <item name="android:textColorPrimary">#ff555555</item> <item name="android:textColorSecondary">#ff808080</item> <item name="android:textAppearanceLarge">@style/preferences_large_text</item> <item name="android:textAppearanceMedium">@style/preferences_medium_text</item> </style>
一些偏好定义如下:
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" android:title="@string/pref_title" > ... <ListPreference android:enabled="false" android:key="@string/pref_change_workspace_key" android:persistent="true" android:summary="@string/pref_change_workspace_summary_singel" android:title="@string/pref_change_workspace_title" /> ... </PreferenceScreen>
问题是所有打开对话框的首选项(如ListPreference)都具有与对话框其余部分不同的样式.
设置片段的第一级看起来不错:
但是单击其中一个元素会产生错误的结果:
和windowbackground属性为透明<item name="android:windowBackground">@android:color/transparent</item>