2015-03-03 17 views

Trả lời

8

Bạn cần thêm TextChangedListener vào số EditText của mình sau đó áp dụng InputFilter xem mã sau.

edDesc.addTextChangedListener(new TextWatcher() { 

    @Override 
    public void onTextChanged(CharSequence s, int start, int before, int count) {} 

    @Override 
    public void beforeTextChanged(CharSequence s, int start, int count, int after) { 
     int wordsLength = countWords(s.toString());// words.length; 
     // count == 0 means a new word is going to start 
     if (count == 0 && wordsLength >= MAX_WORDS) { 
      setCharLimit(edDesc, edDesc.getText().length()); 
     } else { 
      removeFilter(edDesc); 
     } 

     tvWordCount.setText(String.valueOf(wordsLength) + "/" + MAX_WORDS); 
     } 

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

private int countWords(String s) { 
    String trim = s.trim(); 
    if (trim.isEmpty()) 
     return 0; 
    return trim.split("\\s+").length; // separate string around spaces 
} 

private InputFilter filter; 

private void setCharLimit(EditText et, int max) { 
    filter = new InputFilter.LengthFilter(max); 
    et.setFilters(new InputFilter[] { filter }); 
} 

private void removeFilter(EditText et) { 
    if (filter != null) { 
     et.setFilters(new InputFilter[0]); 
     filter = null; 
    } 
} 

Bạn phải chặn sự kiện Dán để người dùng không thể dán nhiều hơn các từ bắt buộc. Bạn có thể chặn Android EditText Dán sự kiện [read more]

+0

bạn vẫn cần phải xem cho dán kiện :) –

-2

Bạn có thể Giới hạn các từ để nhập trong EditText.

đơn giản, thêm

android:maxLength="10" 

Full mã này:

<EditText 
     android:id="@+id/uname" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:inputType="textPersonName" 
     android:maxLength="10"/> 

Tài liệu chính thức here

Chúc mừng Mã hóa :)

+0

Điều đó đặt số ký tự tối đa, không phải từ – CACuzcatlan

Các vấn đề liên quan