我正在使用支持首选项库,每个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>
它是这样的:
最佳答案
我解决的方法是自定义首选项类别文件。
解:
创建一个名为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>
我很早以前就做过,所以不确定是否已完成所有操作,如果缺少某些内容,请给我反馈。
关于java - Android-support.v7.PreferenceCategory填满整个屏幕,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36956730/