Android学习笔记 —— Android 开发中,限制 EditText 输入框不能输入中文(汉字)

 今天在练习开发一个小项目的时候,需要限制 EditText 输入框不能输入中文(汉字),在网上找了很多例子,

 结合自己的实际,终于完成了这一功能。现在把代码记录下来,方便以后查找!

首先是xml布局文件,这个比较简单!就一个简单的 EditText;

activity_csdn.xml

<?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>
 接下来的是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;

/**
 * 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 输入中文的功能就这样实现了,接下来的就是效果图了:


 当然了,如果需要限制输入的 EditText 比较多的时候也可以把方法封装起来使用,代码过程如下:

先创建一个类存放该方法:

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);
                        }
                    }
                }
            }
        });
    }
}
 然后在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;

/**
 * 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!



©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页