天天看點

android 輸入框不可輸入中文,Android學習筆記 —— Android 開發中,限制 EditText 輸入框不能輸入中文(漢字)...

今天在練習開發一個小項目的時候,需要限制 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 輸入中文的功能就這樣實作了,接下來的就是效果圖了:

android 輸入框不可輸入中文,Android學習筆記 —— Android 開發中,限制 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!