自定义首选项类别标题 [英] Custom PreferenceCategory Headings
问题描述
我有一个像这样定义的简单偏好屏幕
I have a simple preference screen defined like this
<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>
我已经设置了样式并在我的应用程序的其他地方使用.
I have a style setup already and used elsewhere in my app.
<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>
这是我的活动
public class PreferencesActivity extends PreferenceActivity implements OnSharedPreferenceChangeListener {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.layout.preferences);
}
}
如何将我的自定义样式应用到 PreferenceCategory
标题?
How do I apply my custom style to the PreferenceCategory
heading?
推荐答案
你应该看看 Preference.Category> style
:
<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
的活动.
So you need to create custom theme that extends default android Theme
and override listSeparatorTextViewStyle
value with ListHeader
style. And then apply this theme to Activity that extends PreferenceActivity
.
这是你可以做到的.
首先,在您的 styles.xml
中添加下一个代码:
First, in your styles.xml
add next code:
<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
中为您的偏好活动添加主题:
Then in your AndroidManifest.xml
add theme to your preference acitivity:
<activity android:name=".MyPreferencesActivity"
android:theme="@style/Theme.Custom"
... >
...
</activity>
截图如下:
这篇关于自定义首选项类别标题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!