Custom checkbox in checkboxPreference - summaryOn & summaryOf

I would like to slightly change the checkboxPreference checkbox by default. I use answers from another similar question, but still there is one thing that does not work.

I have:

<CheckBoxPreference android:key="@string/pref_acceptableads" android:summaryOff="@string/pref_acceptableads_summary_off" android:summaryOn="@string/pref_acceptableads_summary_on" android:title="@string/pref_acceptableads_title" android:widgetLayout="@layout/checkbox_layout" /> 

and

 <?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" android:orientation="horizontal" > <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" /> <CheckBox android:id="@+id/checkbox" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="#FFFFFF"/> </LinearLayout> 

Unfortunately, this way my resumeOn and summaryOf do not work. Nothing happens, but a checkmark appears. When I use an image instead of a checkbox, it works fine - clicking the image causes the summary to change. Why does this not work with a checkbox? And what do I need to do to restore the default behavior?

0
source share
1 answer

You must add the lines:

 android:focusable="false" android:clickable="false" 

for the Checkbox element in the XML layout file.

+1
source

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


All Articles