How to customize text color of the CheckBoxPreference title

前端 未结 4 694
日久生厌
日久生厌 2020-12-14 04:58

How to change the color of Title text in CheckBoxPreference?

相关标签:
4条回答
  • 2020-12-14 05:36

    As zenob said this can be solved by a custom layout. Preference layout defined in the framework is used in the application:

    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>
    

    textColor attribute is defined for title TextView in the above layout. Use this layout with the checkbox preference in preference 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>
    

    Checkbox preference title will have the color defined in the custom layout.

    0 讨论(0)
  • 2020-12-14 05:37

    One easy solution that i found is to add this to your style

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

    textColorPrimary will change the color of title of checkBoxPreference and textColorSecondary will change the color of summary.

    0 讨论(0)
  • 2020-12-14 05:40

    Unfortunately you can't access CheckBoxPreference layout - it's declared in internal package.

    You can still create your own preference with a custom layout.

    0 讨论(0)
  • 2020-12-14 05:53

    You open file color.xml and change to Light Blue #4096ff:

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

    Here is the link of Screenshot enter image description here

    0 讨论(0)
提交回复
热议问题