Android - support.v7.PreferenceCategory填满整个屏幕

时间:2016-04-30 15:28:51

标签: java android android-support-library

我正在使用支持偏好库,每个PreferenceCategory用空格填充整个屏幕,然后显示它包含的首选项。我已经尝试将PreferenceCategory样式属性 - layout_height更改为wrap_content,但它不起作用。

我的偏好风格:

 <style name="PreferenceThemeOverlay">
    <item name="preferenceScreenStyle">@style/Preference.PreferenceScreen</item>
    <item name="preferenceFragmentStyle">@style/PreferenceFragment</item>
    <item name="preferenceCategoryStyle">@style/Preference.Category</item>
    <item name="preferenceStyle">@style/Preference</item>
    <item name="preferenceInformationStyle">@style/Preference.Information</item>
    <item name="checkBoxPreferenceStyle">@style/Preference.CheckBoxPreference</item>
    <item name="switchPreferenceCompatStyle">@style/Preference.SwitchPreferenceCompat</item>
    <item name="dialogPreferenceStyle">@style/Preference.DialogPreference</item>
    <item name="editTextPreferenceStyle">@style/Preference.DialogPreference.EditTextPreference</item>
    <item name="preferenceFragmentListStyle">@style/PreferenceFragmentList</item>
    <item name="android:subtitleTextStyle">@color/dark_gray</item>
</style>

我的偏好xml:

<android.support.v7.preference.PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent">
<android.support.v7.preference.PreferenceCategory
    android:key="pref_user_settings"
    android:title="@string/pref_group_user">
    <android.support.v7.preference.ListPreference
        android:defaultValue="Publisher"
        android:entries="@array/pref_user_types"
        android:entryValues="@array/pref_user_types"
        android:key="pref_user_type"
        android:title="@string/pref_title_user_type" />
</android.support.v7.preference.PreferenceCategory>

它的外观如下: enter image description here enter image description here

1 个答案:

答案 0 :(得分:1)

我解决它的方法是定制偏好类别文件。

<强>解决方案:

创建一个名为custom_preference_category的新布局xml文件:

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textColor="@color/gray"
    android:paddingTop="8dp"
    android:id="@android:id/title" />

然后将其添加到样式文件中:

<style name="Preference.Category">
    <item name="android:layout">@layout/custom_preference_category</item>
    <item name="android:shouldDisableView">false</item>
    <item name="android:selectable">false</item>
</style>

<style name="PreferenceThemeOverlay">
    <item name="preferenceScreenStyle">@style/Preference.PreferenceScreen</item>
    <item name="preferenceFragmentStyle">@style/PreferenceFragment</item>
    <item name="preferenceCategoryStyle">@style/Preference.Category</item>
    <item name="preferenceStyle">@style/Preference</item>
    <item name="preferenceInformationStyle">@style/Preference.Information</item>
    <item name="checkBoxPreferenceStyle">@style/Preference.CheckBoxPreference</item>
    <item name="switchPreferenceCompatStyle">@style/Preference.SwitchPreferenceCompat</item>
    <item name="dialogPreferenceStyle">@style/Preference.DialogPreference</item>
    <item name="editTextPreferenceStyle">@style/Preference.DialogPreference.EditTextPreference
    </item>
    <item name="preferenceFragmentListStyle">@style/PreferenceFragmentList</item>
</style>

然后在主应用主题中使用此样式:

<item name="preferenceTheme">@style/PreferenceThemeOverlay</item>

我很久以前就这么做了所以我不确定这一切是否已经完成,所以如果遗漏了某些内容,请给我反馈。