2011-10-12 64 views
12

Khi tôi đang sử dụng edittext.setError("enter a comment") trong android, nó hoạt động tốt cho đến khi đề xuất bàn phím xuất hiện và lỗi được đẩy lên trên edittext, sau đó không hiển thị toàn bộ thông báo lỗi.Đề xuất bàn phím khiến một phần của thông báo Android EditText.setError() không hiển thị

Tại sao lại thực hiện việc này?

After entering into the textbox, the balloon pop-up now appears above the textbox

+0

nó không tôi đã cố gắng nó đã xảy ra trước khi tôi thậm chí thêm bất cứ thứ gì, bất cứ lý do nào khác điều này có thể xảy ra? –

Trả lời

16

setError
Thiết lập hợp chất drawable cánh tay phải của TextView vào biểu tượng "lỗi" và thiết lập một thông báo lỗi sẽ được hiển thị trong một popup khi TextView có trọng tâm . Biểu tượng và thông báo lỗi sẽ được đặt lại thành không khi bất kỳ sự kiện chính nào gây ra thay đổi đối với văn bản của văn bản . Nếu lỗi là null, thông báo lỗi và biểu tượng sẽ bị xóa .

Vì vậy, khi văn bản được thay đổi, nó sẽ biến mất. Tôi không biết tại sao điều này không xảy ra trong trường hợp của bạn.

Cũng cần phải xóa khi thông báo lỗi là null, vì vậy một trong những trick có thể là:

edittext = (EditText)findViewById(R.id.foo); // add below this line 
edittext.addTextChangedListener(new TextWatcher() { 
    public void afterTextChanged(Editable s) {} 
    public void beforeTextChanged(CharSequence s, int start, int count, int after){} 
    public void onTextChanged(CharSequence s, int start, int before, int count){ 
     if(s != null && s.length() > 0 && edittext.getErrorMessage() != null) { 
      edittext.setErrorMessage(null); 
     } 
    } 
}); 
+0

Đăng mã của lớp nơi bạn gọi 'edittext.setError (" nhập nhận xét ")' – Caner

+0

nó sẽ không cho phép tôi trong 8 giờ và quá nhiều ký tự ở đây nhưng về cơ bản khi nút trong hình ảnh 'cập nhật' được nhấp nó kiểm tra xem liệu văn bản có rỗng không và nếu nó hiển thị lỗi. Cảm ơn xP –

+0

Tôi đã thay đổi mã, hãy kiểm tra. – Caner

6

@Andy Lobel: Tôi cũng phải đối mặt với vấn đề này và phải sửa chữa nó bằng cách đặt trên White- không gian (10-12) ở cuối văn bản, do đó, cắt ngắn chỉ xảy ra với không gian trắng :) Ngoài ra, setError của tôi trông đẹp hơn bằng cách làm cho văn bản setError và EditText căn chỉnh.

Trường hợp khác: Tôi bị kẹt trên một vấn đề khác trong đó, biểu tượng có thể kéo được hiển thị nhưng thông báo nổi và hộp hình chữ nhật của nó không xuất hiện.

My Layout chứa:

1) Tên Edit Text

2) Mật khẩu Edit Text

3) Confirm Password Edit Text

4) Đăng ký Nút

Vì vậy, Tôi đã xác thực và hiển thị lỗi tại thời điểm nhấp vào nút Đăng ký nhưng phát hiện ra rằng thông báo không thành công lê và chỉ có thể vẽ được sử dụng để đi và thấy thông điệp rằng sẽ chỉ xuất hiện khi Edit Text là đặt tiêu điểm như:

Theo setError API Mô tả: - Thiết lập hợp chất drawable cánh tay phải của TextView đến " lỗi "biểu tượng và đặt một thông báo lỗi sẽ được hiển thị trong cửa sổ bật lên 'khi TextView đã tập trung'.

Vì vậy, thông điệp được cho UserName Edit Text nhưng tập trung cuối cùng vẫn vào Confirm Password Chỉnh sửa văn bản, do đó, nó không bao giờ xuất hiện

Các giải pháp/tinh chỉnh cho trường hợp này sẽ được:

EditText.setFocusableInTouchMode(true); 
EditText.requestFocus(); 
EditText.setError("My Error Text"); 

Lưu ý: Đã viết, chỉ trong trường hợp bạn bị kẹt vào thời điểm này mặc dù các giải pháp khác có thể có sẵn và xin lỗi vì có quá nhiều chỉnh sửa vì đây là giải pháp tốt nhất có thể mà tôi đã đưa ra cuối cùng.

+1

Tôi biết điều này khá cũ, nhưng đối với phần cuối cùng của câu trả lời của bạn, chỉ 3 dòng đó không đã làm cho tôi. Sau khi tôi thêm 'EditText.clearFocus();' trước 3 dòng đó, mọi thứ hoạt động như một nét duyên dáng! – GAMA

+0

Cảm ơn, tôi đánh giá cao ý kiến ​​của bạn. Có thể bố cục của bạn đã tập trung vào một số Chế độ xem khác thay vì EditText khi nó được tải. Việc thêm vào đó sẽ giúp tập trung vào Chế độ xem EditText tương ứng. – iabhi

+0

Tuyệt đối có thể. – GAMA

4

Tôi đã dành rất nhiều thời gian cố gắng điều khác nhau để sửa lỗi này ...

Việc sửa chữa dễ dàng: - chắc chắn rằng văn bản lỗi của bạn thực sự là thực sự ngắn

Việc sửa chữa mà làm cho nó tất cả làm việc:

Khi Android hiển thị bàn phím chức năng, chế độ xem với văn bản chỉnh sửa của bạn bị "di chuyển" lên ... và văn bản lỗi di chuyển với điều này. Việc cắt ngắn thường xảy ra như một phần của điều này. Bạn có thể dễ dàng khắc phục điều này bằng cách đặt toàn bộ bố cục của mình vào khung hình ScrollView ... theo cách này, Android có thể di chuyển EditText của bạn lên bằng cách cuộn nó bằng toàn bộ bố cục - và sau đó thông báo lỗi sẽ được hiển thị đầy đủ. Hãy thử nó - nó thực sự hoạt động.

P.S: Tôi thích rằng bạn đã đăng ảnh chụp màn hình sự cố của mình. Làm cho mọi việc trở nên dễ dàng hơn nhiều.

+0

haha ​​cảm ơn, tôi havent xúc động java trong độ tuổi nhưng im chắc chắn nó sẽ hữu ích cho người khác, 1up bạn cần một số đại diện ;-) –

+0

@Stephan W Đây là những gì tôi đã làm, bố trí cha mẹ của các trường của tôi là một 'ScrollView' . Bây giờ vấn đề là khi các thông báo lỗi hiện đang hiển thị và tôi cuộn chế độ xem lên trên, thông báo lỗi sẽ xuất hiện với 'EditText' mặc dù' EditText' hiện đã nằm trong chế độ xem. Làm thế nào để sửa lỗi này? –

0

Đặt giá trị inputType="" cho EditText với giá trị thích hợp android:inputType="textEmailAddress" và cửa sổ bật lên sẽ biến mất khi ký tự đầu tiên được nhập.

1

Một giải pháp:
Thêm android:windowSoftInputMode="adjustResize" trên thẻ hoạt động trong AndroidManifest.xml điều chỉnh vấn đề này đối với tôi

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