jag*_*ish 49 android character android-softkeyboard android-edittext
我正在开发一个键盘应用程序,但我正在解决一个问题.我想以编程方式在android中的EditText中限制/阻止软键盘中的某些特殊字符.
那么,有没有什么办法可以限制android中编辑文本中的任何特殊字符输入.
如果有人有想法,请回复.
提前致谢.
Bir*_*dia 80
试试这个可能适合你
public class MainActivity extends Activity {
    private EditText editText;
    private String blockCharacterSet = "~#^|$%&*!";
    private InputFilter filter = new InputFilter() {
        @Override
        public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
            if (source != null && blockCharacterSet.contains(("" + source))) {
                return "";
            }
            return null;
        }
    };
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        editText = (EditText) findViewById(R.id.editText);
        editText.setFilters(new InputFilter[] { filter });
    }
}
Sol*_*nya 24
这应该工作:
InputFilter filter = new InputFilter() { 
        public CharSequence filter(CharSequence source, int start, int end, 
Spanned dest, int dstart, int dend) { 
                for (int i = start; i < end; i++) { 
                        if (!Character.isLetterOrDigit(source.charAt(i))) { 
                                return ""; 
                        } 
                } 
                return null; 
        } 
}; 
edit.setFilters(new InputFilter[]{filter});
或者如果您更喜欢简单的方法:
<EditText android:inputType="text" android:digits="0123456789*,qwertzuiopasdfghjklyxcvbnm" />
Thi*_*dav 21
如果要添加空格,可以在最后一位数后添加空格.
  android:digits="0123456789qwertzuiopasdfghjklyxcvbnm "
它为时已晚,但可能对其他人有所帮助。您可以使用xml属性来代替programaticaly。可能的情况是,在“单一”布局中,您有许多editText,而您只想在一个EditText中限制特殊字符。因此,在xml中定义将对您有所帮助。这是通过限制特殊字符的代码,允许它们仅输入字母和数字,如下所示
<EditText
     android:id="@+id/editText"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:textSize="@dimen/text10"
     android:singleLine="true"
     android:maxLines="1"
     android:maxLength="16"
     android:digits="abcdefghijklmnopqrstuvwxyz0123456789"/>
对于那些在添加空间时可能遇到问题的人,请添加一个包含所有字母的空格。下面是一个示例 另外,您应该知道在这种情况下用户将无法添加新行。
            <EditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:inputType="text"
            android:digits="0123456789,a bcdefghijklmnopqrstuvwxyz"
            android:maxLines="1"
            android:singleLine="true" />
小智 5
首先需要添加DigitsKeyListener以允许字符,然后将RawInputType设置为edittext字段
edit_field.setKeyListener(DigitsKeyListener.getInstance("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"));
edit_field.setRawInputType(InputType.TYPE_TEXT_VARIATION_PERSON_NAME);
| 归档时间: | 
 | 
| 查看次数: | 60046 次 | 
| 最近记录: |