android EditText输入限制

本文介绍了如何在Android应用中通过EditText属性限制输入,并通过TextWatcher接口实现输入内容的实时监听与修改,包括数字键盘锁定、特殊字符输入限制、密码显示方式及监听输入变化的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

EditText属性,这里只讲输入限制的属性:
android:enabled="false"   //
设置输入框不能被编辑,同时也可以在activity中设置text.SetEnable(false)

android:digits="1234567890.+-*/%n()"   //限制输入框中只能输入自己定义的这些字符串 如果输入其它将不予以显示
android:phoneNumber="true"   //
限制输入框中只能输入手机号码
android:password="true"    //限制输入框中输入的任何内容将以"*"符号来显示
android:hint="默认文字"   //输入内容前默认显示在输入框中的文字
android:textColorHint="#FFF000"   //设置文字内容颜色

顺带把锁定输入键盘弹出时为数字键盘分享给大家:androidinputType=”number”


如果还有一些特殊的限制,比如我做一个项目只能输入数字,且输入a之后再输入A,则只显示A,这就需要单独去进行设置了,也非常的简单。
EditText添加一个监听事件,当检测到里面的内容变化以后,根据需求,修改相关的内容就可以了。
使用EditTextaddTextChangedListener(TextWatcher watcher)方法对EditText实现监听,TextWatcher是一个接口类,所以必须实现TextWatcher里的抽象方法:

当EditText里面的内容有变化的时候,触发TextChangedListener事件,就会调用TextWatcher里面的抽象方法。
public class MainActivity extends Activity {
private EditText text;
String str;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

 1

 2

 3

 4

 5

 6

 7

 8

 9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

    text = (EditText)findViewById(R.id.text);

    text.addTextChangedListener(textWatcher);

}

 

private TextWatcher textWatcher = new TextWatcher() {

 

    @Override  

    public void afterTextChanged(Editable s) {   

        // TODO Auto-generated method stub  

        Log.d("TAG","afterTextChanged--------------->"); 

   

 

    @Override

    public void beforeTextChanged(CharSequence s, int start, int count,

            int after) {

        // TODO Auto-generated method stub

        Log.d("TAG","beforeTextChanged--------------->");

    }

     @Override  

    public void onTextChanged(CharSequence s, int start, int before,    //大家做输入特殊设置只需写此方法即可

            int count) {   

        Log.d("TAG","onTextChanged--------------->");  

        str = text.getText().toString();

        try {

            //if ((heighText.getText().toString())!=null)

            Integer.parseInt(str);

 

        } catch (Exception e) {

            // TODO: handle exception

 

        }

 

    }                  

};

}

该方法可以监听到Edittext的变化,我在onTextChanged里面监听s值得变化,然后做修改以后再setText到EditText里面,不过这时候经常会遇见光标跑到最前面的情况,很恶心,随意每次setText的时候都需要用ev.setSelection(str.length())去重新设置光标位置为str字符串的最后。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值