SwitchBar.java revision 138ff8c0457c6e1345015973668d652fa17c7c3b
141937766981423c9252e12e3319b2e7532739627Fabrice Di Meglio/*
241937766981423c9252e12e3319b2e7532739627Fabrice Di Meglio * Copyright (C) 2014 The Android Open Source Project
341937766981423c9252e12e3319b2e7532739627Fabrice Di Meglio *
441937766981423c9252e12e3319b2e7532739627Fabrice Di Meglio * Licensed under the Apache License, Version 2.0 (the "License");
541937766981423c9252e12e3319b2e7532739627Fabrice Di Meglio * you may not use this file except in compliance with the License.
641937766981423c9252e12e3319b2e7532739627Fabrice Di Meglio * You may obtain a copy of the License at
741937766981423c9252e12e3319b2e7532739627Fabrice Di Meglio *
841937766981423c9252e12e3319b2e7532739627Fabrice Di Meglio *      http://www.apache.org/licenses/LICENSE-2.0
941937766981423c9252e12e3319b2e7532739627Fabrice Di Meglio *
1041937766981423c9252e12e3319b2e7532739627Fabrice Di Meglio * Unless required by applicable law or agreed to in writing, software
1141937766981423c9252e12e3319b2e7532739627Fabrice Di Meglio * distributed under the License is distributed on an "AS IS" BASIS,
1241937766981423c9252e12e3319b2e7532739627Fabrice Di Meglio * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1341937766981423c9252e12e3319b2e7532739627Fabrice Di Meglio * See the License for the specific language governing permissions and
1441937766981423c9252e12e3319b2e7532739627Fabrice Di Meglio * limitations under the License.
1541937766981423c9252e12e3319b2e7532739627Fabrice Di Meglio */
1641937766981423c9252e12e3319b2e7532739627Fabrice Di Meglio
1741937766981423c9252e12e3319b2e7532739627Fabrice Di Megliopackage com.android.settings.widget;
1841937766981423c9252e12e3319b2e7532739627Fabrice Di Meglio
1941937766981423c9252e12e3319b2e7532739627Fabrice Di Meglioimport android.content.Context;
20138ff8c0457c6e1345015973668d652fa17c7c3bFabrice Di Meglioimport android.os.Parcel;
21138ff8c0457c6e1345015973668d652fa17c7c3bFabrice Di Meglioimport android.os.Parcelable;
2241937766981423c9252e12e3319b2e7532739627Fabrice Di Meglioimport android.transition.TransitionManager;
2341937766981423c9252e12e3319b2e7532739627Fabrice Di Meglioimport android.util.AttributeSet;
2441937766981423c9252e12e3319b2e7532739627Fabrice Di Meglioimport android.view.LayoutInflater;
2541937766981423c9252e12e3319b2e7532739627Fabrice Di Meglioimport android.view.View;
2641937766981423c9252e12e3319b2e7532739627Fabrice Di Meglioimport android.view.ViewGroup;
2741937766981423c9252e12e3319b2e7532739627Fabrice Di Meglioimport android.widget.CompoundButton;
2841937766981423c9252e12e3319b2e7532739627Fabrice Di Meglioimport android.widget.LinearLayout;
2941937766981423c9252e12e3319b2e7532739627Fabrice Di Meglio
3041937766981423c9252e12e3319b2e7532739627Fabrice Di Meglioimport android.widget.Switch;
3141937766981423c9252e12e3319b2e7532739627Fabrice Di Meglioimport android.widget.TextView;
3241937766981423c9252e12e3319b2e7532739627Fabrice Di Meglioimport com.android.settings.R;
3341937766981423c9252e12e3319b2e7532739627Fabrice Di Meglio
3441937766981423c9252e12e3319b2e7532739627Fabrice Di Meglioimport java.util.ArrayList;
3541937766981423c9252e12e3319b2e7532739627Fabrice Di Meglio
36e9cb75c636234e44c94b38a877f3c60091d907dcFabrice Di Megliopublic class SwitchBar extends LinearLayout implements CompoundButton.OnCheckedChangeListener,
37e9cb75c636234e44c94b38a877f3c60091d907dcFabrice Di Meglio        View.OnClickListener {
3841937766981423c9252e12e3319b2e7532739627Fabrice Di Meglio
396220275d6dec8ffc6f1df2cbfbf42934d09d41f0Fabrice Di Meglio    private ToggleSwitch mSwitch;
4041937766981423c9252e12e3319b2e7532739627Fabrice Di Meglio    private TextView mTextView;
4141937766981423c9252e12e3319b2e7532739627Fabrice Di Meglio
4241937766981423c9252e12e3319b2e7532739627Fabrice Di Meglio    private ArrayList<OnSwitchChangeListener> mSwitchChangeListeners =
4341937766981423c9252e12e3319b2e7532739627Fabrice Di Meglio            new ArrayList<OnSwitchChangeListener>();
4441937766981423c9252e12e3319b2e7532739627Fabrice Di Meglio
4541937766981423c9252e12e3319b2e7532739627Fabrice Di Meglio    public static interface OnSwitchChangeListener {
4641937766981423c9252e12e3319b2e7532739627Fabrice Di Meglio        /**
4741937766981423c9252e12e3319b2e7532739627Fabrice Di Meglio         * Called when the checked state of the Switch has changed.
4841937766981423c9252e12e3319b2e7532739627Fabrice Di Meglio         *
4941937766981423c9252e12e3319b2e7532739627Fabrice Di Meglio         * @param switchView The Switch view whose state has changed.
5041937766981423c9252e12e3319b2e7532739627Fabrice Di Meglio         * @param isChecked  The new checked state of switchView.
5141937766981423c9252e12e3319b2e7532739627Fabrice Di Meglio         */
5241937766981423c9252e12e3319b2e7532739627Fabrice Di Meglio        void onSwitchChanged(Switch switchView, boolean isChecked);
5341937766981423c9252e12e3319b2e7532739627Fabrice Di Meglio    }
5441937766981423c9252e12e3319b2e7532739627Fabrice Di Meglio
5541937766981423c9252e12e3319b2e7532739627Fabrice Di Meglio    public SwitchBar(Context context) {
5641937766981423c9252e12e3319b2e7532739627Fabrice Di Meglio        this(context, null);
5741937766981423c9252e12e3319b2e7532739627Fabrice Di Meglio    }
5841937766981423c9252e12e3319b2e7532739627Fabrice Di Meglio
5941937766981423c9252e12e3319b2e7532739627Fabrice Di Meglio    public SwitchBar(Context context, AttributeSet attrs) {
6041937766981423c9252e12e3319b2e7532739627Fabrice Di Meglio        this(context, attrs, 0);
6141937766981423c9252e12e3319b2e7532739627Fabrice Di Meglio    }
6241937766981423c9252e12e3319b2e7532739627Fabrice Di Meglio
6341937766981423c9252e12e3319b2e7532739627Fabrice Di Meglio    public SwitchBar(Context context, AttributeSet attrs, int defStyleAttr) {
6441937766981423c9252e12e3319b2e7532739627Fabrice Di Meglio        this(context, attrs, defStyleAttr, 0);
6541937766981423c9252e12e3319b2e7532739627Fabrice Di Meglio    }
6641937766981423c9252e12e3319b2e7532739627Fabrice Di Meglio
6741937766981423c9252e12e3319b2e7532739627Fabrice Di Meglio    public SwitchBar(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
6841937766981423c9252e12e3319b2e7532739627Fabrice Di Meglio        super(context, attrs, defStyleAttr, defStyleRes);
6941937766981423c9252e12e3319b2e7532739627Fabrice Di Meglio
7041937766981423c9252e12e3319b2e7532739627Fabrice Di Meglio        LayoutInflater.from(context).inflate(R.layout.switch_bar, this);
7141937766981423c9252e12e3319b2e7532739627Fabrice Di Meglio
7241937766981423c9252e12e3319b2e7532739627Fabrice Di Meglio        mTextView = (TextView) findViewById(R.id.switch_text);
7341937766981423c9252e12e3319b2e7532739627Fabrice Di Meglio        mTextView.setText(R.string.switch_off_text);
7441937766981423c9252e12e3319b2e7532739627Fabrice Di Meglio
756220275d6dec8ffc6f1df2cbfbf42934d09d41f0Fabrice Di Meglio        mSwitch = (ToggleSwitch) findViewById(R.id.switch_widget);
7641937766981423c9252e12e3319b2e7532739627Fabrice Di Meglio
7741937766981423c9252e12e3319b2e7532739627Fabrice Di Meglio        addOnSwitchChangeListener(new OnSwitchChangeListener() {
7841937766981423c9252e12e3319b2e7532739627Fabrice Di Meglio            @Override
7941937766981423c9252e12e3319b2e7532739627Fabrice Di Meglio            public void onSwitchChanged(Switch switchView, boolean isChecked) {
80138ff8c0457c6e1345015973668d652fa17c7c3bFabrice Di Meglio                setTextViewLabel(isChecked);
8141937766981423c9252e12e3319b2e7532739627Fabrice Di Meglio            }
8241937766981423c9252e12e3319b2e7532739627Fabrice Di Meglio        });
8341937766981423c9252e12e3319b2e7532739627Fabrice Di Meglio
8441937766981423c9252e12e3319b2e7532739627Fabrice Di Meglio        mSwitch.setTrackResource(R.drawable.switch_track);
8541937766981423c9252e12e3319b2e7532739627Fabrice Di Meglio        mSwitch.setThumbResource(R.drawable.switch_inner);
8641937766981423c9252e12e3319b2e7532739627Fabrice Di Meglio
87e9cb75c636234e44c94b38a877f3c60091d907dcFabrice Di Meglio        setOnClickListener(this);
88e9cb75c636234e44c94b38a877f3c60091d907dcFabrice Di Meglio
8941937766981423c9252e12e3319b2e7532739627Fabrice Di Meglio        // Default is hide
9041937766981423c9252e12e3319b2e7532739627Fabrice Di Meglio        setVisibility(View.GONE);
9141937766981423c9252e12e3319b2e7532739627Fabrice Di Meglio    }
9241937766981423c9252e12e3319b2e7532739627Fabrice Di Meglio
93138ff8c0457c6e1345015973668d652fa17c7c3bFabrice Di Meglio    public void setTextViewLabel(boolean isChecked) {
94138ff8c0457c6e1345015973668d652fa17c7c3bFabrice Di Meglio        mTextView.setText(isChecked ? R.string.switch_on_text : R.string.switch_off_text);
95138ff8c0457c6e1345015973668d652fa17c7c3bFabrice Di Meglio    }
96138ff8c0457c6e1345015973668d652fa17c7c3bFabrice Di Meglio
97138ff8c0457c6e1345015973668d652fa17c7c3bFabrice Di Meglio    public void setChecked(boolean checked) {
98138ff8c0457c6e1345015973668d652fa17c7c3bFabrice Di Meglio        setTextViewLabel(checked);
99138ff8c0457c6e1345015973668d652fa17c7c3bFabrice Di Meglio        mSwitch.setChecked(checked);
100138ff8c0457c6e1345015973668d652fa17c7c3bFabrice Di Meglio    }
101138ff8c0457c6e1345015973668d652fa17c7c3bFabrice Di Meglio
102138ff8c0457c6e1345015973668d652fa17c7c3bFabrice Di Meglio    public boolean isChecked() {
103138ff8c0457c6e1345015973668d652fa17c7c3bFabrice Di Meglio        return mSwitch.isChecked();
104138ff8c0457c6e1345015973668d652fa17c7c3bFabrice Di Meglio    }
105138ff8c0457c6e1345015973668d652fa17c7c3bFabrice Di Meglio
106138ff8c0457c6e1345015973668d652fa17c7c3bFabrice Di Meglio    public void setEnabled(boolean enabled) {
107138ff8c0457c6e1345015973668d652fa17c7c3bFabrice Di Meglio        super.setEnabled(enabled);
108138ff8c0457c6e1345015973668d652fa17c7c3bFabrice Di Meglio        mTextView.setEnabled(enabled);
109138ff8c0457c6e1345015973668d652fa17c7c3bFabrice Di Meglio        mSwitch.setEnabled(false);
110138ff8c0457c6e1345015973668d652fa17c7c3bFabrice Di Meglio    }
111138ff8c0457c6e1345015973668d652fa17c7c3bFabrice Di Meglio
112138ff8c0457c6e1345015973668d652fa17c7c3bFabrice Di Meglio    public final ToggleSwitch getSwitch() {
11341937766981423c9252e12e3319b2e7532739627Fabrice Di Meglio        return mSwitch;
11441937766981423c9252e12e3319b2e7532739627Fabrice Di Meglio    }
11541937766981423c9252e12e3319b2e7532739627Fabrice Di Meglio
11641937766981423c9252e12e3319b2e7532739627Fabrice Di Meglio    public void show() {
117138ff8c0457c6e1345015973668d652fa17c7c3bFabrice Di Meglio        if (!isShowing()) {
118138ff8c0457c6e1345015973668d652fa17c7c3bFabrice Di Meglio            setVisibility(View.VISIBLE);
119138ff8c0457c6e1345015973668d652fa17c7c3bFabrice Di Meglio            mSwitch.setOnCheckedChangeListener(this);
120138ff8c0457c6e1345015973668d652fa17c7c3bFabrice Di Meglio        }
12141937766981423c9252e12e3319b2e7532739627Fabrice Di Meglio    }
12241937766981423c9252e12e3319b2e7532739627Fabrice Di Meglio
12341937766981423c9252e12e3319b2e7532739627Fabrice Di Meglio    public void hide() {
124138ff8c0457c6e1345015973668d652fa17c7c3bFabrice Di Meglio        if (isShowing()) {
125138ff8c0457c6e1345015973668d652fa17c7c3bFabrice Di Meglio            setVisibility(View.GONE);
126138ff8c0457c6e1345015973668d652fa17c7c3bFabrice Di Meglio            mSwitch.setOnCheckedChangeListener(null);
127138ff8c0457c6e1345015973668d652fa17c7c3bFabrice Di Meglio        }
12841937766981423c9252e12e3319b2e7532739627Fabrice Di Meglio    }
12941937766981423c9252e12e3319b2e7532739627Fabrice Di Meglio
13041937766981423c9252e12e3319b2e7532739627Fabrice Di Meglio    public boolean isShowing() {
13141937766981423c9252e12e3319b2e7532739627Fabrice Di Meglio        return (getVisibility() == View.VISIBLE);
13241937766981423c9252e12e3319b2e7532739627Fabrice Di Meglio    }
13341937766981423c9252e12e3319b2e7532739627Fabrice Di Meglio
13441937766981423c9252e12e3319b2e7532739627Fabrice Di Meglio    @Override
135e9cb75c636234e44c94b38a877f3c60091d907dcFabrice Di Meglio    public void onClick(View v) {
136e9cb75c636234e44c94b38a877f3c60091d907dcFabrice Di Meglio        final boolean isChecked = !mSwitch.isChecked();
137e9cb75c636234e44c94b38a877f3c60091d907dcFabrice Di Meglio        mSwitch.setChecked(isChecked);
138e9cb75c636234e44c94b38a877f3c60091d907dcFabrice Di Meglio    }
139e9cb75c636234e44c94b38a877f3c60091d907dcFabrice Di Meglio
140e9cb75c636234e44c94b38a877f3c60091d907dcFabrice Di Meglio    public void propagateChecked(boolean isChecked) {
14141937766981423c9252e12e3319b2e7532739627Fabrice Di Meglio        final int count = mSwitchChangeListeners.size();
14241937766981423c9252e12e3319b2e7532739627Fabrice Di Meglio        for (int n = 0; n < count; n++) {
143e9cb75c636234e44c94b38a877f3c60091d907dcFabrice Di Meglio            mSwitchChangeListeners.get(n).onSwitchChanged(mSwitch, isChecked);
14441937766981423c9252e12e3319b2e7532739627Fabrice Di Meglio        }
14541937766981423c9252e12e3319b2e7532739627Fabrice Di Meglio    }
14641937766981423c9252e12e3319b2e7532739627Fabrice Di Meglio
147e9cb75c636234e44c94b38a877f3c60091d907dcFabrice Di Meglio    @Override
148e9cb75c636234e44c94b38a877f3c60091d907dcFabrice Di Meglio    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
149e9cb75c636234e44c94b38a877f3c60091d907dcFabrice Di Meglio        propagateChecked(isChecked);
150e9cb75c636234e44c94b38a877f3c60091d907dcFabrice Di Meglio    }
151e9cb75c636234e44c94b38a877f3c60091d907dcFabrice Di Meglio
15241937766981423c9252e12e3319b2e7532739627Fabrice Di Meglio    public void addOnSwitchChangeListener(OnSwitchChangeListener listener) {
15341937766981423c9252e12e3319b2e7532739627Fabrice Di Meglio        if (mSwitchChangeListeners.contains(listener)) {
15441937766981423c9252e12e3319b2e7532739627Fabrice Di Meglio            throw new IllegalStateException("Cannot add twice the same OnSwitchChangeListener");
15541937766981423c9252e12e3319b2e7532739627Fabrice Di Meglio        }
15641937766981423c9252e12e3319b2e7532739627Fabrice Di Meglio        mSwitchChangeListeners.add(listener);
15741937766981423c9252e12e3319b2e7532739627Fabrice Di Meglio    }
15841937766981423c9252e12e3319b2e7532739627Fabrice Di Meglio
15941937766981423c9252e12e3319b2e7532739627Fabrice Di Meglio    public void removeOnSwitchChangeListener(OnSwitchChangeListener listener) {
16041937766981423c9252e12e3319b2e7532739627Fabrice Di Meglio        if (!mSwitchChangeListeners.contains(listener)) {
16141937766981423c9252e12e3319b2e7532739627Fabrice Di Meglio            throw new IllegalStateException("Cannot remove OnSwitchChangeListener");
16241937766981423c9252e12e3319b2e7532739627Fabrice Di Meglio        }
16341937766981423c9252e12e3319b2e7532739627Fabrice Di Meglio        mSwitchChangeListeners.remove(listener);
16441937766981423c9252e12e3319b2e7532739627Fabrice Di Meglio    }
165138ff8c0457c6e1345015973668d652fa17c7c3bFabrice Di Meglio
166138ff8c0457c6e1345015973668d652fa17c7c3bFabrice Di Meglio    static class SavedState extends BaseSavedState {
167138ff8c0457c6e1345015973668d652fa17c7c3bFabrice Di Meglio        boolean checked;
168138ff8c0457c6e1345015973668d652fa17c7c3bFabrice Di Meglio        boolean visible;
169138ff8c0457c6e1345015973668d652fa17c7c3bFabrice Di Meglio
170138ff8c0457c6e1345015973668d652fa17c7c3bFabrice Di Meglio        SavedState(Parcelable superState) {
171138ff8c0457c6e1345015973668d652fa17c7c3bFabrice Di Meglio            super(superState);
172138ff8c0457c6e1345015973668d652fa17c7c3bFabrice Di Meglio        }
173138ff8c0457c6e1345015973668d652fa17c7c3bFabrice Di Meglio
174138ff8c0457c6e1345015973668d652fa17c7c3bFabrice Di Meglio        /**
175138ff8c0457c6e1345015973668d652fa17c7c3bFabrice Di Meglio         * Constructor called from {@link #CREATOR}
176138ff8c0457c6e1345015973668d652fa17c7c3bFabrice Di Meglio         */
177138ff8c0457c6e1345015973668d652fa17c7c3bFabrice Di Meglio        private SavedState(Parcel in) {
178138ff8c0457c6e1345015973668d652fa17c7c3bFabrice Di Meglio            super(in);
179138ff8c0457c6e1345015973668d652fa17c7c3bFabrice Di Meglio            checked = (Boolean)in.readValue(null);
180138ff8c0457c6e1345015973668d652fa17c7c3bFabrice Di Meglio            visible = (Boolean)in.readValue(null);
181138ff8c0457c6e1345015973668d652fa17c7c3bFabrice Di Meglio        }
182138ff8c0457c6e1345015973668d652fa17c7c3bFabrice Di Meglio
183138ff8c0457c6e1345015973668d652fa17c7c3bFabrice Di Meglio        @Override
184138ff8c0457c6e1345015973668d652fa17c7c3bFabrice Di Meglio        public void writeToParcel(Parcel out, int flags) {
185138ff8c0457c6e1345015973668d652fa17c7c3bFabrice Di Meglio            super.writeToParcel(out, flags);
186138ff8c0457c6e1345015973668d652fa17c7c3bFabrice Di Meglio            out.writeValue(checked);
187138ff8c0457c6e1345015973668d652fa17c7c3bFabrice Di Meglio            out.writeValue(visible);
188138ff8c0457c6e1345015973668d652fa17c7c3bFabrice Di Meglio        }
189138ff8c0457c6e1345015973668d652fa17c7c3bFabrice Di Meglio
190138ff8c0457c6e1345015973668d652fa17c7c3bFabrice Di Meglio        @Override
191138ff8c0457c6e1345015973668d652fa17c7c3bFabrice Di Meglio        public String toString() {
192138ff8c0457c6e1345015973668d652fa17c7c3bFabrice Di Meglio            return "SwitchBar.SavedState{"
193138ff8c0457c6e1345015973668d652fa17c7c3bFabrice Di Meglio                    + Integer.toHexString(System.identityHashCode(this))
194138ff8c0457c6e1345015973668d652fa17c7c3bFabrice Di Meglio                    + " checked=" + checked
195138ff8c0457c6e1345015973668d652fa17c7c3bFabrice Di Meglio                    + " visible=" + visible + "}";
196138ff8c0457c6e1345015973668d652fa17c7c3bFabrice Di Meglio        }
197138ff8c0457c6e1345015973668d652fa17c7c3bFabrice Di Meglio
198138ff8c0457c6e1345015973668d652fa17c7c3bFabrice Di Meglio        public static final Parcelable.Creator<SavedState> CREATOR
199138ff8c0457c6e1345015973668d652fa17c7c3bFabrice Di Meglio                = new Parcelable.Creator<SavedState>() {
200138ff8c0457c6e1345015973668d652fa17c7c3bFabrice Di Meglio            public SavedState createFromParcel(Parcel in) {
201138ff8c0457c6e1345015973668d652fa17c7c3bFabrice Di Meglio                return new SavedState(in);
202138ff8c0457c6e1345015973668d652fa17c7c3bFabrice Di Meglio            }
203138ff8c0457c6e1345015973668d652fa17c7c3bFabrice Di Meglio
204138ff8c0457c6e1345015973668d652fa17c7c3bFabrice Di Meglio            public SavedState[] newArray(int size) {
205138ff8c0457c6e1345015973668d652fa17c7c3bFabrice Di Meglio                return new SavedState[size];
206138ff8c0457c6e1345015973668d652fa17c7c3bFabrice Di Meglio            }
207138ff8c0457c6e1345015973668d652fa17c7c3bFabrice Di Meglio        };
208138ff8c0457c6e1345015973668d652fa17c7c3bFabrice Di Meglio    }
209138ff8c0457c6e1345015973668d652fa17c7c3bFabrice Di Meglio
210138ff8c0457c6e1345015973668d652fa17c7c3bFabrice Di Meglio    @Override
211138ff8c0457c6e1345015973668d652fa17c7c3bFabrice Di Meglio    public Parcelable onSaveInstanceState() {
212138ff8c0457c6e1345015973668d652fa17c7c3bFabrice Di Meglio        Parcelable superState = super.onSaveInstanceState();
213138ff8c0457c6e1345015973668d652fa17c7c3bFabrice Di Meglio
214138ff8c0457c6e1345015973668d652fa17c7c3bFabrice Di Meglio        SavedState ss = new SavedState(superState);
215138ff8c0457c6e1345015973668d652fa17c7c3bFabrice Di Meglio        ss.checked = mSwitch.isChecked();
216138ff8c0457c6e1345015973668d652fa17c7c3bFabrice Di Meglio        ss.visible = isShowing();
217138ff8c0457c6e1345015973668d652fa17c7c3bFabrice Di Meglio        return ss;
218138ff8c0457c6e1345015973668d652fa17c7c3bFabrice Di Meglio    }
219138ff8c0457c6e1345015973668d652fa17c7c3bFabrice Di Meglio
220138ff8c0457c6e1345015973668d652fa17c7c3bFabrice Di Meglio    @Override
221138ff8c0457c6e1345015973668d652fa17c7c3bFabrice Di Meglio    public void onRestoreInstanceState(Parcelable state) {
222138ff8c0457c6e1345015973668d652fa17c7c3bFabrice Di Meglio        SavedState ss = (SavedState) state;
223138ff8c0457c6e1345015973668d652fa17c7c3bFabrice Di Meglio
224138ff8c0457c6e1345015973668d652fa17c7c3bFabrice Di Meglio        super.onRestoreInstanceState(ss.getSuperState());
225138ff8c0457c6e1345015973668d652fa17c7c3bFabrice Di Meglio        mSwitch.setChecked(ss.checked);
226138ff8c0457c6e1345015973668d652fa17c7c3bFabrice Di Meglio        setTextViewLabel(ss.checked);
227138ff8c0457c6e1345015973668d652fa17c7c3bFabrice Di Meglio        setVisibility(ss.visible ? View.VISIBLE : View.GONE);
228138ff8c0457c6e1345015973668d652fa17c7c3bFabrice Di Meglio        requestLayout();
229138ff8c0457c6e1345015973668d652fa17c7c3bFabrice Di Meglio    }
23041937766981423c9252e12e3319b2e7532739627Fabrice Di Meglio}
231