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

 我来答
千锋教育
2015-12-06 · 做真实的自己 用良心做教育
千锋教育
千锋教育专注HTML5大前端、JavaEE、Python、人工智能、UI&UE、云计算、全栈软件测试、大数据、物联网+嵌入式、Unity游戏开发、网络安全、互联网营销、Go语言等培训教育。
向TA提问
展开全部

方法1::在布局文件中设置文本编辑框属性作字符数限制,android:maxLength="10" 即限制最大输入字符个数为10


方法2:在代码中使用InputFilter 进行过滤

public class MyActivity extends Activity {  
    private EditText text;
    @Override  
    public void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.main);  
          
        text = (EditText)findViewById(R.id.text);  
        text .setFilters(new InputFilter[]{new InputFilter.LengthFilter(20)});  
    }  
}


方法3:利用 TextWatcher 进行监听

继承TextWatcher接口,对输入进行监听

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 onTextChanged(CharSequence s, int start, int before, int count) {
        // 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);  
              
        }  
    }


@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}


@Override
public void afterTextChanged(Editable s) {
}  
  
}


在activity中为EditText添加监听

public class MyActivity extends Activity {  
    private EditText text;
    @Override  
    public void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.main);  
  
        text = (EditText) findViewById(R.id.entry);  
        //限制为10
        text.addTextChangedListener(new MaxLengthWatcher(10, editText));  
  
    }  
}
GuoceWang
2015-07-15 · TA获得超过197个赞
知道小有建树答主
回答量:334
采纳率:100%
帮助的人:119万
展开全部
<EditText
android:id="@+id/password_text"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:maxLength="32"
android:ems="10"
android:imeOptions="actionDone"
android:inputType="textPassword"
android:textSize="22px" />

其中 android:maxLength="32" 就是限制最大输入长度。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
玩玩乐乐无爱cW103
2015-07-15 · TA获得超过131个赞
知道小有建树答主
回答量:78
采纳率:0%
帮助的人:81.9万
展开全部
xml里配置maxLength属性
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式