2012-08-23 45 views
74

Tôi thiết lập độ dài văn bản tối đa trong trường EditText.Android EditText Độ dài tối đa

<EditText 
      android:id="@+id/courseDescriptionField" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:inputType="textMultiLine" 
      android:lines="5" 
      android:maxLength="@integer/max_course_description_limit" 
      android:gravity="left|top" > 
     </EditText> 

Vấn đề đối với tôi là tuy nhiên, rằng, văn bản ngừng xuất hiện sau 140 ký tự, nhưng nó vẫn tiếp tục gõ, trừ văn bản mà chỉ cần không xuất hiện, nhưng tuy nhiên, nó không xuất hiện trong "đệm" (có nghĩa là điều gợi ý) nếu đó là những gì bạn sẽ gọi nó.

Là một lưu ý phụ, tôi đang sử dụng Trình soạn thảo để theo dõi giới hạn. Có cách nào để hạn chế hoàn toàn số lượng văn bản, để khi có 140 ký tự, không có gì xảy ra khi một thứ khác không phải là backspace/delete được nhấn?

Trả lời

89

có thể trùng lặp của Limit text length of EditText in Android

Sử dụng android: maxLength = "140"

Điều đó sẽ làm việc. :)

Hy vọng rằng sẽ giúp

+2

Tôi có cùng một vấn đề nhưng điều này không làm việc cho tôi – Mansi

+0

gì đang xảy ra trong bạn? đặt một câu hỏi mới và đưa mã của bạn vào đó và tôi sẽ xem xét. đặt một liên kết đến câu hỏi của bạn ở đây để tôi có thể tìm thấy nó –

+0

Cùng một vấn đề! Có giải pháp nào không? – mrroboaat

36

Tôi đã gặp vấn đề tương tự.

Đây là một workaround

android:inputType="textNoSuggestions|textVisiblePassword" 
android:maxLength="6" 

Thx để How can I turnoff suggestions in EditText?

+0

Điều thú vị là việc sửa đổi inputType cho phép maxLength hoạt động đúng cách, ngăn người dùng gõ thêm bộ đệm. Tôi muốn Google sửa lỗi này. –

+0

Dường như chỉ có textNoSuggestions là cần thiết để xóa các chữ cái khi nhấn phím backkey. –

+0

Điều này thật kỳ lạ, tự hỏi nếu google biết lỗi này! – Skynet

12
EditText editText= ....; 
InputFilter[] fa= new InputFilter[1]; 
fa[0] = new InputFilter.LengthFilter(8); 
editText.setFilters(fa); 
5

tôi đã cùng một vấn đề. Nó hoạt động hoàn toàn tốt khi bạn thêm điều này:

android:inputType="textFilter" 

đến EditText.

+0

đây là câu trả lời đúng. cảm ơn bạn –

0

Nếu bạn sử dụng maxLength = 6, một số lần những gì bạn nhập các ký tự đó sẽ được thêm vào đầu bàn phím được gọi là đề xuất. Vì vậy, khi bạn xóa các chữ cái được nhập vào thời gian đó, nó sẽ xóa các đề xuất trước và sau đó là văn bản thực tế bên trong EditText. Cho rằng bạn cần phải loại bỏ các suggestions.just thêm

android:inputType="textNoSuggestions"` 

hoặc

android:inputType="textFilter" 

Nó sẽ loại bỏ những gợi ý.

0

Đối với tôi việc giải pháp này:

edittext.setInputType(InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS | InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD); 
0

Nếu bạn muốn xem một nhãn truy cập, bạn có thể sử dụng app:counterEnabledandroid:maxLength, như:

<android.support.design.widget.TextInputLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    app:counterEnabled="true"> 

    <EditText 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:maxLength="420" /> 

</android.support.design.widget.TextInputLayout> 

KHÔNG thiết app:counterMaxLength trên TextInputLayout vì nó sẽ xung đột với android:maxLength dẫn đến vấn đề ký tự ẩn sau khi văn bản đạt đến giới hạn kích thước.

1

Bạn có thể thử này

EditText et = (EditText) findViewById(R.id.myeditText); 
    et.setFilters(new InputFilter[]{ new InputFilter.LengthFilter(140) }); // maximum length is 140 
Các vấn đề liên quan