1cead91974acf5b31e0c9b5e0b71dc55c2c5c0ab8Xiyuan Xia/*
2cead91974acf5b31e0c9b5e0b71dc55c2c5c0ab8Xiyuan Xia * Copyright (C) 2015 The Android Open Source Project
3cead91974acf5b31e0c9b5e0b71dc55c2c5c0ab8Xiyuan Xia *
4cead91974acf5b31e0c9b5e0b71dc55c2c5c0ab8Xiyuan Xia * Licensed under the Apache License, Version 2.0 (the "License");
5cead91974acf5b31e0c9b5e0b71dc55c2c5c0ab8Xiyuan Xia * you may not use this file except in compliance with the License.
6cead91974acf5b31e0c9b5e0b71dc55c2c5c0ab8Xiyuan Xia * You may obtain a copy of the License at
7cead91974acf5b31e0c9b5e0b71dc55c2c5c0ab8Xiyuan Xia *
8cead91974acf5b31e0c9b5e0b71dc55c2c5c0ab8Xiyuan Xia *      http://www.apache.org/licenses/LICENSE-2.0
9cead91974acf5b31e0c9b5e0b71dc55c2c5c0ab8Xiyuan Xia *
10cead91974acf5b31e0c9b5e0b71dc55c2c5c0ab8Xiyuan Xia * Unless required by applicable law or agreed to in writing, software
11cead91974acf5b31e0c9b5e0b71dc55c2c5c0ab8Xiyuan Xia * distributed under the License is distributed on an "AS IS" BASIS,
12cead91974acf5b31e0c9b5e0b71dc55c2c5c0ab8Xiyuan Xia * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13cead91974acf5b31e0c9b5e0b71dc55c2c5c0ab8Xiyuan Xia * See the License for the specific language governing permissions and
14cead91974acf5b31e0c9b5e0b71dc55c2c5c0ab8Xiyuan Xia * limitations under the License.
15cead91974acf5b31e0c9b5e0b71dc55c2c5c0ab8Xiyuan Xia */
16cead91974acf5b31e0c9b5e0b71dc55c2c5c0ab8Xiyuan Xia
17cead91974acf5b31e0c9b5e0b71dc55c2c5c0ab8Xiyuan Xiapackage com.android.internal.widget;
18cead91974acf5b31e0c9b5e0b71dc55c2c5c0ab8Xiyuan Xia
19cead91974acf5b31e0c9b5e0b71dc55c2c5c0ab8Xiyuan Xiaimport android.text.InputFilter;
20cead91974acf5b31e0c9b5e0b71dc55c2c5c0ab8Xiyuan Xiaimport android.text.Spanned;
21cead91974acf5b31e0c9b5e0b71dc55c2c5c0ab8Xiyuan Xiaimport android.widget.TextView;
22cead91974acf5b31e0c9b5e0b71dc55c2c5c0ab8Xiyuan Xia
23cead91974acf5b31e0c9b5e0b71dc55c2c5c0ab8Xiyuan Xia/**
24cead91974acf5b31e0c9b5e0b71dc55c2c5c0ab8Xiyuan Xia * Helper class to disable input on a TextView. The input is disabled by swapping in an InputFilter
25cead91974acf5b31e0c9b5e0b71dc55c2c5c0ab8Xiyuan Xia * that discards all changes. Use with care if you have customized InputFilter on the target
26cead91974acf5b31e0c9b5e0b71dc55c2c5c0ab8Xiyuan Xia * TextView.
27cead91974acf5b31e0c9b5e0b71dc55c2c5c0ab8Xiyuan Xia */
28cead91974acf5b31e0c9b5e0b71dc55c2c5c0ab8Xiyuan Xiapublic class TextViewInputDisabler {
29cead91974acf5b31e0c9b5e0b71dc55c2c5c0ab8Xiyuan Xia    private TextView mTextView;
30cead91974acf5b31e0c9b5e0b71dc55c2c5c0ab8Xiyuan Xia    private InputFilter[] mDefaultFilters;
31cead91974acf5b31e0c9b5e0b71dc55c2c5c0ab8Xiyuan Xia    private InputFilter[] mNoInputFilters = new InputFilter[] {
32cead91974acf5b31e0c9b5e0b71dc55c2c5c0ab8Xiyuan Xia            new InputFilter () {
33cead91974acf5b31e0c9b5e0b71dc55c2c5c0ab8Xiyuan Xia                @Override
34cead91974acf5b31e0c9b5e0b71dc55c2c5c0ab8Xiyuan Xia                public CharSequence filter(CharSequence source, int start, int end, Spanned dest,
35cead91974acf5b31e0c9b5e0b71dc55c2c5c0ab8Xiyuan Xia                        int dstart, int dend) {
36cead91974acf5b31e0c9b5e0b71dc55c2c5c0ab8Xiyuan Xia                    return "";
37cead91974acf5b31e0c9b5e0b71dc55c2c5c0ab8Xiyuan Xia                }
38cead91974acf5b31e0c9b5e0b71dc55c2c5c0ab8Xiyuan Xia            }
39cead91974acf5b31e0c9b5e0b71dc55c2c5c0ab8Xiyuan Xia    };
40cead91974acf5b31e0c9b5e0b71dc55c2c5c0ab8Xiyuan Xia
41cead91974acf5b31e0c9b5e0b71dc55c2c5c0ab8Xiyuan Xia    public TextViewInputDisabler(TextView textView) {
42cead91974acf5b31e0c9b5e0b71dc55c2c5c0ab8Xiyuan Xia        mTextView = textView;
43cead91974acf5b31e0c9b5e0b71dc55c2c5c0ab8Xiyuan Xia        mDefaultFilters = mTextView.getFilters();
44cead91974acf5b31e0c9b5e0b71dc55c2c5c0ab8Xiyuan Xia    }
45cead91974acf5b31e0c9b5e0b71dc55c2c5c0ab8Xiyuan Xia
46cead91974acf5b31e0c9b5e0b71dc55c2c5c0ab8Xiyuan Xia    public void setInputEnabled(boolean enabled) {
47cead91974acf5b31e0c9b5e0b71dc55c2c5c0ab8Xiyuan Xia        mTextView.setFilters(enabled ? mDefaultFilters : mNoInputFilters);
48cead91974acf5b31e0c9b5e0b71dc55c2c5c0ab8Xiyuan Xia    }
49cead91974acf5b31e0c9b5e0b71dc55c2c5c0ab8Xiyuan Xia}
50