Android學習筆記 —— Android 開發中,限制 EditText 輸入框不能輸入中文(漢字)
阿新 • • 發佈:2019-01-07
今天在練習開發一個小專案的時候,需要限制 EditText 輸入框不能輸入中文(漢字),在網上找了很多例子,
結合自己的實際,終於完成了這一功能。現在把程式碼記錄下來,方便以後查詢!
首先是xml佈局檔案,這個比較簡單!就一個簡單的 EditText;
activity_csdn.xml :
接下來的是java程式碼檔案;<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:layout_width="wrap_content" android:layout_height="50dp" android:layout_gravity="center" android:gravity="center" android:textSize="20sp" android:text="輸入框限制輸入中文"/> <EditText android:id="@+id/csdnText" android:layout_width="match_parent" android:layout_marginTop="20dp" android:layout_marginLeft="20dp" android:layout_marginRight="20dp" android:layout_height="50dp" /> </LinearLayout>
CsdnActivity.java :
限制 EditText 輸入中文的功能就這樣實現了,接下來的就是效果圖了: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; /** * Created by Administration on 2018/1/29. */ 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 比較多的時候也可以把方法封裝起來使用,程式碼過程如下:
先建立一個類存放該方法:
然後在CsdnActivity中呼叫該方法就OK了,package com.liyu.logistic.utils; import android.text.Editable; import android.text.TextWatcher; import android.widget.EditText; /** * 限定只能輸入一個小數點且只能輸入兩個小數 * Created by Administration on 2017/12/7. */ 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); } } } } }); } }
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;
/**
* Created by Administration on 2018/1/29.
*/
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!