2010-03-17 34 views

Trả lời

290

Phải là một cái gì đó như thế. nhưng không bao giờ sử dụng nó cho TextView, chỉ EditText:

TextView tv = new TextView(this); 
int maxLength = 10; 
InputFilter[] fArray = new InputFilter[1]; 
fArray[0] = new InputFilter.LengthFilter(maxLength); 
tv.setFilters(fArray); 
+104

xây dựng trên đó, nó có thể là sạch hơn nhiều để đi: tv.setFilters (mới InputFilter [] {InputFilter.LengthFilter mới (10)}); –

+0

điều này làm việc cho tôi – adrian4aes

+16

Không thể chỉ nói "maxLength()" .. không, không, không .. điều đó sẽ quá dễ dàng. họ phải làm trừu tượng nó .. yay! – giulio

52

Hãy thử

int maxLengthofEditText = 4;  
editText.setFilters(new InputFilter[] {new InputFilter.LengthFilter(maxLengthofEditText)}); 
+1

Điều này làm việc cho tôi, nhưng trong Android 5.1 bạn vẫn có thể tiếp tục gõ chữ cái, được yust "vô hình" trong inputfield. Nhưng chúng được thể hiện trong đề xuất văn bản. Và khi bạn cố gắng xóa các chữ cái ở cuối. – Radon8472

+7

Đây không phải là "một cách khác", đây là phiên bản ngắn của câu trả lời đầu tiên, cùng một cách. –

8

Cách dễ dàng giới hạn ký tự này chỉnh sửa văn bản:

EditText ed=(EditText)findViewById(R.id.edittxt); 
ed.setFilters(new InputFilter[]{new InputFilter.LengthFilter(15)}); 
4

Đối với những ai sử dụng Kotlin

fun EditText.limitLength(maxLength: Int) { 
    filters = arrayOf(InputFilter.LengthFilter(maxLength)) 
} 

Sau đó, bạn chỉ có thể sử dụng một editText.limitLength đơn giản (10)

+0

tại sao không sử dụng setMaxLength làm tên hàm? bạn có thể áp dụng điều này để textview cũng ... nhờ +1 :) – crgarridos

+0

Tôi có phương pháp khác theo mẫu này: limitDecimalPlaces, limitNumberOnly, limitAscii để đi cùng với limitLength. – Kevin

0
 AlertDialog.Builder builder = new AlertDialog.Builder(this); 
        builder.setTitle("Title"); 


        final EditText input = new EditText(this); 
        input.setInputType(InputType.TYPE_CLASS_NUMBER); 
//for Limit...      
input.setFilters(new InputFilter[] {new InputFilter.LengthFilter(3)}); 
        builder.setView(input); 
Các vấn đề liên quan