我有一个这样定义的简单首选项屏幕
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory android:title="Security">
<CheckBoxPreference
android:title="Require Pin on Start"
android:summary="Require pin to run the application"
android:key="@string/pref_require_pin"
android:defaultValue="false" />
</PreferenceCategory>
<PreferenceCategory android:title="Settings">
<ListPreference
android:title="History Age (in days)"
android:summary="Display items up to 30 days old"
android:key="@string/pref_history_days"
android:defaultValue="30"
android:entries="@array/days_list"
android:entryValues="@array/days_list"
android:dialogTitle="Select History Age"/>
</PreferenceCategory>
</PreferenceScreen>
我已经有一个样式设置并在我的应用程序的其他地方使用。
<style name="ListHeader">
<item name="android:textColor">#000000</item>
<item name="android:textStyle">bold</item>
<item name="android:textSize">12sp</item>
<item name="android:background">#cccccc</item>
<item name="android:paddingTop">6px</item>
<item name="android:paddingBottom">6px</item>
<item name="android:paddingLeft">12px</item>
</style>
这是我的 Activity
public class PreferencesActivity extends PreferenceActivity implements OnSharedPreferenceChangeListener {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.layout.preferences);
}
}
如何将我的自定义样式应用到 PreferenceCategory
标题?
最佳答案
你应该看看Preference.Category
风格:
<style name="Preference.Category">
<item name="android:layout">@android:layout/preference_category</item>
<item name="android:shouldDisableView">false</item>
<item name="android:selectable">false</item>
</style>
我们来看看preference_category.xml
文件:
<!-- Layout used for PreferenceCategory in a PreferenceActivity. -->
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
style="?android:attr/listSeparatorTextViewStyle"
android:id="@+android:id/title"
/>
因此,您需要创建自定义主题来扩展默认的 android Theme
并使用 ListHeader
样式覆盖 listSeparatorTextViewStyle
值。然后将此主题应用于扩展 PreferenceActivity
的 Activity。
您可以这样做。
首先,在您的 styles.xml
中添加下一个代码:
<style name="PreferenceListHeader"
parent="@android:style/Widget.TextView.ListSeparator">
<item name="android:textColor">#000000</item>
<item name="android:textStyle">bold</item>
<item name="android:textSize">12sp</item>
<item name="android:background">#cccccc</item>
<item name="android:paddingTop">6px</item>
<item name="android:paddingBottom">6px</item>
<item name="android:paddingLeft">12px</item>
</style>
<style name="Theme.Custom" parent="@android:style/Theme">
<item name="android:listSeparatorTextViewStyle">@style/PreferenceListHeader</item>
</style>
然后在您的 AndroidManifest.xml
中将主题添加到您的偏好 Activity 中:
<activity android:name=".MyPreferencesActivity"
android:theme="@style/Theme.Custom"
... >
...
</activity>
这是截图:
关于android - 自定义首选项类别标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6297635/