SwitchPreference.java revision 929f27aab7ac7231f3734c988d5ee7201627d535
16904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler/* 26904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler* Copyright (C) 2015 The Android Open Source Project 36904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler* 46904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler* Licensed under the Apache License, Version 2.0 (the "License"); 56904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler* you may not use this file except in compliance with the License. 66904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler* You may obtain a copy of the License at 76904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler* 86904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler* http://www.apache.org/licenses/LICENSE-2.0 96904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler* 106904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler* Unless required by applicable law or agreed to in writing, software 116904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler* distributed under the License is distributed on an "AS IS" BASIS, 126904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 136904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler* See the License for the specific language governing permissions and 146904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler* limitations under the License 156904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler*/ 166904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler 176904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantlerpackage android.support.v14.preference; 186904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler 196904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantlerimport android.content.Context; 206904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantlerimport android.content.res.TypedArray; 2184765eaea7da18d0576db557959129e9d0db8e8cTony Mantlerimport android.support.v4.content.res.TypedArrayUtils; 223fadd62b614e4a69aefe920aac640bdb629e502eJason Monkimport android.support.v7.preference.AndroidResources; 236904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantlerimport android.support.v7.preference.PreferenceViewHolder; 246904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantlerimport android.support.v7.preference.TwoStatePreference; 256904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantlerimport android.util.AttributeSet; 266904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantlerimport android.view.View; 27c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslavimport android.view.accessibility.AccessibilityManager; 286904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantlerimport android.widget.Checkable; 296904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantlerimport android.widget.CompoundButton; 306904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantlerimport android.widget.Switch; 316904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler 326904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler/** 336904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * A {@link android.support.v7.preference.Preference} that provides a two-state toggleable option. 346904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * <p> 356904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * This preference will store a boolean into the SharedPreferences. 366904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * 37929f27aab7ac7231f3734c988d5ee7201627d535Alan Viverette * @attr name android:summaryOff 38929f27aab7ac7231f3734c988d5ee7201627d535Alan Viverette * @attr name android:summaryOn 39929f27aab7ac7231f3734c988d5ee7201627d535Alan Viverette * @attr name android:switchTextOff 40929f27aab7ac7231f3734c988d5ee7201627d535Alan Viverette * @attr name android:switchTextOn 41929f27aab7ac7231f3734c988d5ee7201627d535Alan Viverette * @attr name android:disableDependentsState 426904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler */ 436904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantlerpublic class SwitchPreference extends TwoStatePreference { 446904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler private final Listener mListener = new Listener(); 456904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler 466904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler // Switch text for on and off states 476904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler private CharSequence mSwitchOn; 486904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler private CharSequence mSwitchOff; 496904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler 506904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler private class Listener implements CompoundButton.OnCheckedChangeListener { 516904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler @Override 526904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 536904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler if (!callChangeListener(isChecked)) { 546904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler // Listener didn't like it, change it back. 556904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler // CompoundButton will make sure we don't recurse. 566904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler buttonView.setChecked(!isChecked); 576904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler return; 586904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler } 596904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler 606904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler SwitchPreference.this.setChecked(isChecked); 616904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler } 626904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler } 636904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler 646904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler /** 656904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * Construct a new SwitchPreference with the given style options. 666904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * 676904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * @param context The Context that will style this preference 686904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * @param attrs Style attributes that differ from the default 696904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * @param defStyleAttr An attribute in the current theme that contains a 706904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * reference to a style resource that supplies default values for 716904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * the view. Can be 0 to not look for defaults. 726904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * @param defStyleRes A resource identifier of a style resource that 736904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * supplies default values for the view, used only if 746904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * defStyleAttr is 0 or can not be found in the theme. Can be 0 756904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * to not look for defaults. 766904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler */ 776904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler public SwitchPreference(Context context, AttributeSet attrs, int defStyleAttr, 786904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler int defStyleRes) { 796904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler super(context, attrs, defStyleAttr, defStyleRes); 806904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler 816904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler TypedArray a = context.obtainStyledAttributes(attrs, 826904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler R.styleable.SwitchPreference, defStyleAttr, defStyleRes); 8384765eaea7da18d0576db557959129e9d0db8e8cTony Mantler 8484765eaea7da18d0576db557959129e9d0db8e8cTony Mantler setSummaryOn(TypedArrayUtils.getString(a, R.styleable.SwitchPreference_summaryOn, 8584765eaea7da18d0576db557959129e9d0db8e8cTony Mantler R.styleable.SwitchPreference_android_summaryOn)); 8684765eaea7da18d0576db557959129e9d0db8e8cTony Mantler 8784765eaea7da18d0576db557959129e9d0db8e8cTony Mantler setSummaryOff(TypedArrayUtils.getString(a, R.styleable.SwitchPreference_summaryOff, 8884765eaea7da18d0576db557959129e9d0db8e8cTony Mantler R.styleable.SwitchPreference_android_summaryOff)); 8984765eaea7da18d0576db557959129e9d0db8e8cTony Mantler 9084765eaea7da18d0576db557959129e9d0db8e8cTony Mantler setSwitchTextOn(TypedArrayUtils.getString(a, 9184765eaea7da18d0576db557959129e9d0db8e8cTony Mantler R.styleable.SwitchPreference_switchTextOn, 9284765eaea7da18d0576db557959129e9d0db8e8cTony Mantler R.styleable.SwitchPreference_android_switchTextOn)); 9384765eaea7da18d0576db557959129e9d0db8e8cTony Mantler 9484765eaea7da18d0576db557959129e9d0db8e8cTony Mantler setSwitchTextOff(TypedArrayUtils.getString(a, 9584765eaea7da18d0576db557959129e9d0db8e8cTony Mantler R.styleable.SwitchPreference_switchTextOff, 9684765eaea7da18d0576db557959129e9d0db8e8cTony Mantler R.styleable.SwitchPreference_android_switchTextOff)); 9784765eaea7da18d0576db557959129e9d0db8e8cTony Mantler 9884765eaea7da18d0576db557959129e9d0db8e8cTony Mantler setDisableDependentsState(TypedArrayUtils.getBoolean(a, 9984765eaea7da18d0576db557959129e9d0db8e8cTony Mantler R.styleable.SwitchPreference_disableDependentsState, 10084765eaea7da18d0576db557959129e9d0db8e8cTony Mantler R.styleable.SwitchPreference_android_disableDependentsState, false)); 10184765eaea7da18d0576db557959129e9d0db8e8cTony Mantler 1026904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler a.recycle(); 1036904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler } 1046904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler 1056904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler /** 1066904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * Construct a new SwitchPreference with the given style options. 1076904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * 1086904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * @param context The Context that will style this preference 1096904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * @param attrs Style attributes that differ from the default 1106904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * @param defStyleAttr An attribute in the current theme that contains a 1116904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * reference to a style resource that supplies default values for 1126904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * the view. Can be 0 to not look for defaults. 1136904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler */ 1146904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler public SwitchPreference(Context context, AttributeSet attrs, int defStyleAttr) { 1156904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler this(context, attrs, defStyleAttr, 0); 1166904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler } 1176904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler 1186904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler /** 1196904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * Construct a new SwitchPreference with the given style options. 1206904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * 1216904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * @param context The Context that will style this preference 1226904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * @param attrs Style attributes that differ from the default 1236904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler */ 1246904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler public SwitchPreference(Context context, AttributeSet attrs) { 1256759b1021d8198ad1d239bb30e5a102b99624bceAdam Lesinski this(context, attrs, TypedArrayUtils.getAttr(context, 1266759b1021d8198ad1d239bb30e5a102b99624bceAdam Lesinski android.support.v7.preference.R.attr.switchPreferenceStyle, 1273fadd62b614e4a69aefe920aac640bdb629e502eJason Monk android.R.attr.switchPreferenceStyle)); 1286904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler } 1296904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler 1306904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler /** 1316904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * Construct a new SwitchPreference with default style options. 1326904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * 1336904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * @param context The Context that will style this preference 1346904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler */ 1356904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler public SwitchPreference(Context context) { 1366904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler this(context, null); 1376904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler } 1386904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler 1396904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler @Override 140671d9d6db5c64e6c8392e56fb84a181ca0550469Tony Mantler public void onBindViewHolder(PreferenceViewHolder holder) { 1416904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler super.onBindViewHolder(holder); 1423fadd62b614e4a69aefe920aac640bdb629e502eJason Monk View switchView = holder.findViewById(AndroidResources.ANDROID_R_SWITCH_WIDGET); 143c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav syncSwitchView(switchView); 1446904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler syncSummaryView(holder); 1456904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler } 1466904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler 1476904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler /** 1486904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * Set the text displayed on the switch widget in the on state. 1496904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * This should be a very short string; one word if possible. 1506904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * 1516904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * @param onText Text to display in the on state 1526904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler */ 1536904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler public void setSwitchTextOn(CharSequence onText) { 1546904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler mSwitchOn = onText; 1556904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler notifyChanged(); 1566904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler } 1576904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler 1586904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler /** 1596904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * Set the text displayed on the switch widget in the off state. 1606904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * This should be a very short string; one word if possible. 1616904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * 1626904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * @param offText Text to display in the off state 1636904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler */ 1646904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler public void setSwitchTextOff(CharSequence offText) { 1656904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler mSwitchOff = offText; 1666904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler notifyChanged(); 1676904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler } 1686904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler 1696904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler /** 1706904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * Set the text displayed on the switch widget in the on state. 1716904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * This should be a very short string; one word if possible. 1726904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * 1736904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * @param resId The text as a string resource ID 1746904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler */ 1756904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler public void setSwitchTextOn(int resId) { 1766904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler setSwitchTextOn(getContext().getString(resId)); 1776904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler } 1786904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler 1796904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler /** 1806904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * Set the text displayed on the switch widget in the off state. 1816904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * This should be a very short string; one word if possible. 1826904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * 1836904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * @param resId The text as a string resource ID 1846904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler */ 1856904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler public void setSwitchTextOff(int resId) { 1866904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler setSwitchTextOff(getContext().getString(resId)); 1876904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler } 1886904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler 1896904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler /** 1906904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * @return The text that will be displayed on the switch widget in the on state 1916904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler */ 1926904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler public CharSequence getSwitchTextOn() { 1936904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler return mSwitchOn; 1946904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler } 1956904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler 1966904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler /** 1976904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler * @return The text that will be displayed on the switch widget in the off state 1986904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler */ 1996904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler public CharSequence getSwitchTextOff() { 2006904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler return mSwitchOff; 2016904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler } 202c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav 203c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav /** 204c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav * @hide 205c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav */ 206c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav @Override 207c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav protected void performClick(View view) { 208c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav super.performClick(view); 209c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav syncViewIfAccessibilityEnabled(view); 210c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav } 211c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav 212c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav 213c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav private void syncViewIfAccessibilityEnabled(View view) { 214c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav AccessibilityManager accessibilityManager = (AccessibilityManager) 215c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav getContext().getSystemService(Context.ACCESSIBILITY_SERVICE); 216c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav if (!accessibilityManager.isEnabled()) { 217c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav return; 218c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav } 219c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav 2206759b1021d8198ad1d239bb30e5a102b99624bceAdam Lesinski View switchView = view.findViewById(android.support.v7.preference.R.id.switchWidget); 221c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav syncSwitchView(switchView); 222c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav 223c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav View summaryView = view.findViewById(android.R.id.summary); 224c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav syncSummaryView(summaryView); 225c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav } 226c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav 227c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav private void syncSwitchView(View view) { 228c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav if (view instanceof Switch) { 229c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav final Switch switchView = (Switch) view; 230c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav switchView.setOnCheckedChangeListener(null); 231c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav } 232c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav if (view instanceof Checkable) { 233c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav ((Checkable) view).setChecked(mChecked); 234c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav } 235c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav if (view instanceof Switch) { 236c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav final Switch switchView = (Switch) view; 237c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav switchView.setTextOn(mSwitchOn); 238c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav switchView.setTextOff(mSwitchOff); 239c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav switchView.setOnCheckedChangeListener(mListener); 240c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav } 241c67647d83261aad33d42309c52aa75e05ea9daf7Svetoslav } 2426904f67c96a28a0e5966b4fb6d37a0ad5f136858Tony Mantler} 243