How to customize CheckBoxPreference header text color

How to change header text color in CheckBoxPreference?

+4
source share
4 answers

As zenob said, this can be solved with a custom layout. The application uses the preferences layout defined in the structure:

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> 

the textColor attribute is defined for the TextView header in the above layout. Use this layout with checkbox preference in xml preference.

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> 

The flag preference header will have the color defined in the custom layout.

+20
source

One simple solution 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 the name checkBoxPreference and textColorSecondary will change the color of summary .

+6
source

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

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

Here is a link to a screenshot, enter a description of the image here

+1
source

Unfortunately, you cannot access the CheckBoxPreference layout - it is declared in the internal package.

You can create your own preferences using a custom layout.

0
source

Source: https://habr.com/ru/post/1332478/


All Articles