android edittext_Android如何限制EditText最大输入字符数

方法一:

在 xml 文件中设置文本编辑框属性作字符数限制 如:android:maxLength="10" 即限制最大输入字符个数为10

方法二:

在代码中使用InputFilter 进行过滤 //editText.setFilters(new InputFilter[]{new InputFilter.LengthFilter(20)}); 即限定最大输入字符数为20
public class TextEditActivity extends Activity {    /** Called when the activity is first created. */    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);                EditText editText = (EditText)findViewById(R.id.entry);        editText.setFilters(new InputFilter[]{new InputFilter.LengthFilter(20)});    }}
方法三: 利用 TextWatcher 进行监听
package cie.textEdit; import android.text.Editable;import android.text.Selection;import android.text.TextWatcher;import android.widget.EditText; /* * 监听输入内容是否超出最大长度,并设置光标位置 * */public class MaxLengthWatcher implements TextWatcher {   private int maxLen = 0;  private EditText editText = null;      public MaxLengthWatcher(int maxLen, EditText editText) {    this.maxLen = maxLen;    this.editText = editText;  }   public void afterTextChanged(Editable arg0) {    // TODO Auto-generated method stub      }   public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,      int arg3) {    // TODO Auto-generated method stub      }   public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {    // TODO Auto-generated method stub    Editable editable = editText.getText();    int len = editable.length();        if(len > maxLen)    {      int selEndIndex = Selection.getSelectionEnd(editable);      String str = editable.toString();      //截取新字符串      String newStr = str.substring(0,maxLen);      editText.setText(newStr);      editable = editText.getText();            //新字符串的长度      int newLen = editable.length();      //旧光标位置超过字符串长度      if(selEndIndex > newLen)      {        selEndIndex = editable.length();      }      //设置新光标所在的位置      Selection.setSelection(editable, selEndIndex);      }  }}
对 应的 activity 部分的调用为:
package cie.textEdit; import android.app.Activity;import android.os.Bundle;import android.text.InputFilter;import android.widget.EditText; public class TextEditActivity extends Activity {    /** Called when the activity is first created. */    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);     EditText editText = (EditText) findViewById(R.id.entry);    editText.addTextChangedListener(new MaxLengthWatcher(10, editText));     }}
限制输入字符数为10个 main.xml 文件
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="fill_parent"    android:layout_height="fill_parent">    <TextView        android:id="@+id/label"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:text="Type here:"/>    <EditText        android:id="@+id/entry"        android:singleLine="true"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:background="@android:drawable/editbox_background"        android:layout_below="@id/label"/>    <Button        android:id="@+id/ok"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_below="@id/entry"        android:layout_alignParentRight="true"        android:layout_marginLeft="10dip"        android:text="OK" />    <Button        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_toLeftOf="@id/ok"        android:layout_alignTop="@id/ok"        android:text="Cancel" />RelativeLayout>

效果为输入了10个字符后,光标停在末尾

a5d3e95014c39b2d8fea3dc3b0ccf61b.png

到这里就结束啦. 往期精彩回顾:
  • Android实现短信验证码自动填充功能

  • Android仿echo精美弹幕功能

  • Android实现头像重叠排列功能

  • Android仿QQ个性标签功能

  • Android仿QQ侧滑删除的功能

0e3a8d306f8dda432ce13a7c38e678fd.png

3add9adb8e598312103911a0f7b5d26b.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值