首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何自定义CheckBoxPreference的布局(CheckBoxPreference)?

如何自定义CheckBoxPreference的布局(CheckBoxPreference)?
EN

Stack Overflow用户
提问于 2018-05-14 21:48:18
回答 1查看 379关注 0票数 1

我使用下面的settings.xml来膨胀我的SettingsFragment扩展android.support.v7.preference.PreferenceFragmentCompat

代码语言:javascript
复制
<android.support.v7.preference.PreferenceScreen 
    xmlns:android="http://schemas.android.com/apk/res/android">

    <android.support.v7.preference.PreferenceCategory 
        android:title="@string/settings_category_title_general">

        <android.support.v7.preference.CheckBoxPreference
            android:defaultValue="@string/settings_default_value_lorem"
            android:key="@string/settings_key_lorem"
            android:summary="@string/settings_summary_lorem"
            android:title="@string/settings_title_lorem" />

    </android.support.v7.preference.PreferenceCategory>

</android.support.v7.preference.PreferenceScreen>

summary文本在四行之后被切断,是在res/layout/preferences.xmlcom.android.support:preference-v7:24.2.1中定义的。

代码语言:javascript
复制
<TextView android:id="@android:id/summary"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@android:id/title"
    android:layout_alignStart="@android:id/title"
    android:textAppearance="?android:attr/textAppearanceSmall"
    android:textColor="?android:attr/textColorSecondary"
    android:maxLines="4" />

布局检查器还显示summary id:

为了覆盖设置,我定义了以下样式:

代码语言:javascript
复制
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="preferenceTheme">@style/AppPreferenceTheme</item>
</style>

<style name="AppPreferenceTheme" parent="@style/PreferenceThemeOverlay">
    <item name="preferenceStyle">@style/AppPreference</item>
</style>

<style name="AppPreference" parent="@style/Preference">
    <item name="android:layout">@layout/settings_item</item>
</style>

并创建了名为preferences.xml的原始布局文件settings_item.xml的副本,该文件覆盖android:maxLines="4"

但是,样式是,而不是应用。我在background视图中添加了一个summary颜色来检查这个颜色。

相关

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-15 14:00:55

来自构造函数

从XML中执行扩展,并应用类特定的基样式。此首选项构造函数允许子类在膨胀时使用它们自己的基本样式。例如,CheckBoxPreference构造函数调用超类构造函数的这个版本,并为defStyleAttr提供android.R.attr.checkBoxPreferenceStyle。这允许主题的复选框首选项样式修改所有基本首选项属性以及CheckBoxPreference类的属性。

因此,将您的样式更改为:

代码语言:javascript
复制
<style name="AppPreferenceTheme" parent="@style/PreferenceThemeOverlay">
    <item name="checkBoxPreferenceStyle">@style/AppPreference</item>
</style>

<style name="AppPreference" parent="@style/Preference.CheckBoxPreference">
    <item name="layout">@layout/settings_item</item>
</style>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50339504

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档