如何自定义CheckBoxPreference标题的文本颜色

5
如何更改CheckBoxPreference中标题文本的颜色?

嘿,Suresh,你是怎么做到的?我试图改变首选项组标题的颜色,我认为这与你尝试的类似。你能详细说明一下吗? - user718458
@rohan,请看已发布的答案。 - Suresh
4个回答

22

正如zenob所说,这可以通过自定义布局来解决。在应用程序中使用了框架中定义的Preference布局:

custom_preferece_layout.xml

<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2006 The Android Open Source Project Licensed under the 
    Apache License, Version 2.0 (the "License"); you may not use this file except 
    in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 
    Unless required by applicable law or agreed to in writing, software distributed 
    under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES 
    OR CONDITIONS OF ANY KIND, either express or implied. See the License for 
    the specific language governing permissions and limitations under the License. -->

<!-- Layout for a Preference in a PreferenceActivity. The Preference is able 
    to place a specific widget for its particular type in the "widget_frame" 
    layout. -->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent" android:layout_height="wrap_content"
    android:minHeight="?android:attr/listPreferredItemHeight"
    android:gravity="center_vertical" android:paddingRight="?android:attr/scrollbarSize">

    <RelativeLayout android:layout_width="wrap_content"
        android:layout_height="wrap_content" android:layout_marginLeft="15dip"
        android:layout_marginRight="6dip" android:layout_marginTop="6dip"
        android:layout_marginBottom="6dip" android:layout_weight="1">

        <TextView android:id="@+android:id/title"
            android:layout_width="wrap_content" android:layout_height="wrap_content"
            android:singleLine="true" android:textAppearance="?android:attr/textAppearanceLarge"
            android:ellipsize="marquee" android:fadingEdge="horizontal"
            android:textColor="#FF0000" />

        <TextView android:id="@+android:id/summary"
            android:layout_width="wrap_content" android:layout_height="wrap_content"
            android:layout_below="@android:id/title" android:layout_alignLeft="@android:id/title"
            android:textAppearance="?android:attr/textAppearanceSmall"
            android:maxLines="4" />

    </RelativeLayout>

    <!-- Preference should place its actual preference widget here. -->
    <LinearLayout android:id="@+android:id/widget_frame"
        android:layout_width="wrap_content" android:layout_height="match_parent"
        android:gravity="center_vertical" android:orientation="vertical" />

</LinearLayout>

上述布局中,标题TextView定义了textColor属性。将此布局与偏好设置XML中的复选框偏好设置一起使用。

mypreference.xml

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
    <CheckBoxPreference android:key="testcheckbox"
    android:title="Checkbox Title"
    android:summary="Checkbox Summary..."
    android:layout="@layout/custom_preference_layout"></CheckBoxPreference>
</PreferenceScreen>
< p > 复选框偏好设置的标题将具有在自定义布局中定义的颜色。< /p >

1
这是我找到的最佳答案,用于自定义CheckBoxPreference小部件...结合使用包含简单列表的自定义布局,将使您完全自定义应用程序的PreferenceActivity。 - Ionut Negru
我找不到我的问题的答案,也许你能帮助我。如何在preferenceScreen中自定义复选框的外观?比如说复选框背景的颜色?我可以在widget_frame中添加一个复选框,但是如果在checkBoxPreference中有summaryOn/summaryOff,它就不起作用了。更多详情请见:http://stackoverflow.com/questions/29004961/custom-checkbox-in-checkboxpreference-summaryon-summaryoff 非常感谢您的关注! - Malvinka

6
我发现一个简单的解决方案是将以下内容添加到您的样式表中:

    <item name="android:textColorSecondary">#000000</item>
    <item name="android:textColorPrimary">#000000</item>

textColorPrimary 将改变 checkBoxPreference 标题的颜色,textColorSecondary 将改变 summary 的颜色。


2

您需要打开color.xml文件并将颜色更改为浅蓝色 #4096ff:

<color name="colorAccent">#4096ff</color> 

这是屏幕截图的链接: 在此输入图片描述

0

很遗憾,您无法访问CheckBoxPreference布局 - 它在内部包中声明。

您仍然可以创建具有自定义布局的自己的首选项。


好的,从核心资源中复制了preference.xml,并修改了TextView(android:id / title)的颜色,并将其设置为CheckBoxPreference的小部件布局已经起作用。 - Suresh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接