What's the best way to limit text length of EditText in Android

后端 未结 22 1909
囚心锁ツ
囚心锁ツ 2020-11-22 13:33

What\'s the best way to limit the text length of an EditText in Android?

Is there a way to do this via xml?

22条回答
  •  醉酒成梦
    2020-11-22 14:29

    This is a custom EditText Class that allow Length filter to live along with other filters. Thanks to Tim Gallagher's Answer (below)

    import android.content.Context;
    import android.text.InputFilter;
    import android.util.AttributeSet;
    import android.widget.EditText;
    
    
    public class EditTextMultiFiltering extends EditText{
    
        public EditTextMultiFiltering(Context context) {
            super(context);
        }
    
        public EditTextMultiFiltering(Context context, AttributeSet attrs) {
            super(context, attrs);
        }
    
        public EditTextMultiFiltering(Context context, AttributeSet attrs, int defStyleAttr) {
            super(context, attrs, defStyleAttr);
        }
    
        public void setMaxLength(int length) {
            InputFilter curFilters[];
            InputFilter.LengthFilter lengthFilter;
            int idx;
    
            lengthFilter = new InputFilter.LengthFilter(length);
    
            curFilters = this.getFilters();
            if (curFilters != null) {
                for (idx = 0; idx < curFilters.length; idx++) {
                    if (curFilters[idx] instanceof InputFilter.LengthFilter) {
                        curFilters[idx] = lengthFilter;
                        return;
                    }
                }
    
                // since the length filter was not part of the list, but
                // there are filters, then add the length filter
                InputFilter newFilters[] = new InputFilter[curFilters.length + 1];
                System.arraycopy(curFilters, 0, newFilters, 0, curFilters.length);
                newFilters[curFilters.length] = lengthFilter;
                this.setFilters(newFilters);
            } else {
                this.setFilters(new InputFilter[] { lengthFilter });
            }
        }
    }
    

提交回复
热议问题