Android中限制EditText(輸入框)文字輸入長度

來源:互聯網
上載者:User

開發過程經常遇到要輸入使用者名稱等類似要限制輸入字數的要求,我們可以用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);   }

用這樣方法的優點是可以用在多個輸入框中,可是有個缺點是當用Word Flow法一次輸入較長的中文詞語或英文單詞後,不會自動截斷詞語或單詞。

(全文完)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.