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