今天在練習開發一個小項目的時候,需要限制 EditText 輸入框不能輸入中文(漢字),在網上找了很多例子,
結合自己的實際,終于完成了這一功能。現在把代碼記錄下來,友善以後查找!
首先是xml布局檔案,這個比較簡單!就一個簡單的 EditText;
activity_csdn.xml :
接下來的是java代碼檔案;
CsdnActivity.java :
package com.liyu.logistic.activity;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.text.Editable;
import android.text.TextWatcher;
import android.widget.EditText;
import com.liyu.logistic.R;
public class CsdnActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_csdn);
EditText csdnText = (EditText) findViewById(R.id.csdnText);
csdnText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
if (s.length() > 0) {
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if (c >= 0x4e00 && c <= 0X9fff) { // 根據位元組碼判斷
// 如果是中文,則清除輸入的字元,否則保留
s.delete(i,i+1);
}
}
}
}
});
}
}
限制 EditText 輸入中文的功能就這樣實作了,接下來的就是效果圖了:
當然了,如果需要限制輸入的 EditText 比較多的時候也可以把方法封裝起來使用,代碼過程如下:
先建立一個類存放該方法:
package com.liyu.logistic.utils;
import android.text.Editable;
import android.text.TextWatcher;
import android.widget.EditText;
public class TextChangedListener {
// 限制輸入框不能輸入漢字
public static void StringWatcher(final EditText editText){
editText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
if (s.length() > 0) {
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if (c >= 0x4e00 && c <= 0X9fff) {
s.delete(i,i+1);
}
}
}
}
});
}
}
然後在CsdnActivity中調用該方法就OK了,
package com.liyu.logistic.activity;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.text.Editable;
import android.text.TextWatcher;
import android.widget.EditText;
import com.liyu.logistic.R;
import com.liyu.logistic.utils.TextChangedListener;
public class CsdnActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_csdn);
EditText csdnText = (EditText) findViewById(R.id.csdnText);
TextChangedListener.StringWatcher(csdnText);
}
}
這次的記錄完成了,哈哈!
轉載請注明出處:http://mp.blog.csdn.net/postedit/79200024!