Android中限制EditText(输入框)文字输入长度

开发过程经常遇到要输入用户名等类似要限制输入字数的要求,我们可以用InputFilter来实现,

下面是继承的InputFilter:


public class MyInputFilter implements InputFilter {

   private Paint mPaint;
   
   private int mMaxWidth;

   private static final String TAG = "MyInputFilter";
   
   private int EDIT_WIDTH = 280;
   
   private int mPadding = 10;
   
   public MyInputFilter(Paint paint, int maxWidth) {
      if (paint != null) {
         mPaint = paint;
      } else {
         mPaint = new Paint();
         mPaint.setTextSize(30F);
      }

      if (maxWidth > 0) {
         mMaxWidth = maxWidth - mPadding;
      } else {
         mMaxWidth = EDIT_WIDTH;
      }

   }


   @Override
   public CharSequence filter(CharSequence source, int start, int end,
         Spanned dest, int dstart, int dend) {

      float w = mPaint.measureText(dest.toString() + source.toString());
      if (w > mMaxWidth) {
         //TODO: remind the user not to input anymore
         return "";
      }

      return source;
   }

}

这样来使用它:

 /*
    * Set edit text input max length constraint to border.
    */
   public static void setEditTextFilter(EditText edit) {
     
      int width = edit.getWidth();
     
      Utils.log("Uitls", "edit width = " + width);
         
      Paint paint = new Paint();
      paint.setTextSize(edit.getTextSize());
     
      InputFilter[] filters = { new MyInputFilter(paint, width) };
     
      edit.setFilters(filters);
   }

用这样方法的优点是可以用在多个输入框中,可是有个缺点是当用联想输入法一次输入较长的中文词语或英文单词后,不会自动截断词语或单词。


(全文完)

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值