自定义首选项布局小部件不可见

时间:2014-10-15 02:07:32

标签: android android-layout android-activity android-fragments android-preferences

修改

对于遇到这种情况的人来说,我开始工作的方式是:

直接为每个首选项设置布局,如:

<CheckboxPreference
    android:layout="@layout/checkbox_preference_item"/>

或者像以前一样通过主题设置样式,但是定义一个widgetlayout并设置它而不是实际布局,就像这样,preferenceStyle设置为@style/Preference和{{1 }}设置为checkBoxPreferenceStyle

@style/Preference.Checkbox

我尝试自定义复选框首选项的布局,但复选框本身没有显示。我在android代码之后建模并且不确定我哪里出错了。文本视图工作正常以及布局的其余部分,但复选框没有显示。非常感谢任何帮助。

相关代码:

theme.xml:

<Style name="Preference">
    <item name="android:layout">@layout/checkbox_preference_item</item>
</Style>

<Style name="Preference.Checkbox">
    <item name="android:widgetLayout">@layout/your_custom_widget</item>
</Style>

style.xml

<style name="Theme.Settings" parent="android:Theme.Holo.Light">
    <item name="android:actionBarStyle">@style/SettingsActionBarStyle</item>
    <item name="android:windowActionBarOverlay">true</item>
    <item name="android:windowContentOverlay">@null</item>
    <item name="android:preferenceCategoryStyle">@style/PreferenceCategory</item>
    <item name="android:preferenceStyle">@style/Preference</item>
    <item name="android:checkBoxPreferenceStyle">@style/Checkbox</item>
</style>

checkbox_preference_item.xml

<style name="Checkbox">
    <item name="android:layout">@layout/checkbox_preference_item</item>
</style>

<style name="Preference.Text">
    <item name="android:layout_height">wrap_content</item>
    <item name="android:layout_width">wrap_content</item>
    <item name="android:fontFamily">sans-serif-light</item>
    <item name="android:textSize">@dimen/preferences_item_font</item>
    <item name="android:textColor">@color/preference_text</item>
</style>

<style name="Preference.Text.Extra" parent="Preference.Text">
    <item name="android:textSize">@dimen/preferences_header_font</item>
</style>

1 个答案:

答案 0 :(得分:-1)

我没有在布局xml中看到CheckBox。我错过了什么吗?您需要指定类似的内容:

<CheckBox android:id="..." ... />

然后您可能需要指定类似

的内容
<CheckBoxPreference android:key="..." ... />

在首选项xml文件中。设置应该是android:widgetLayout到自定义CheckBox。

查看此帖子可能会为您提供更多帮助customizing checkbox preference