setHintTextColor () trong EditText


88

Tôi có Chế độ xem trong đó có hai hộp văn bản và người dùng có thể chọn màu văn bản từ một chế độ xem khác trên cùng một màn hình (thông qua hộp thoại).

Vì vậy, khi người dùng thay đổi màu thông qua hộp thoại, tôi đang thay đổi màu của EditTextvăn bản và gợi ý của nó. Nhưng khi có một số văn bản có sẵn EditTextsau khi người dùng chọn màu khác, thì văn bản đó sẽ có màu đó. Nhưng nếu tôi xóa tất cả văn bản đó thì màu của HintText là màu trước đó.

Ví dụ: hiện tại, nếu tôi có màu đỏ trong hộp văn bản và người dùng chọn màu xanh lục thì văn bản sẽ có màu xanh lục. Nhưng nếu tôi xóa văn bản đó thì văn bản gợi ý sẽ có màu đỏ ngay cả khi tôi thay đổi màu gợi ý trong mã. Vấn đề này chỉ đến khi có một số văn bản ở đó. nếu nó trống và có văn bản gợi ý thì vấn đề sẽ không xảy ra.


1
Kiểm tra điều này, xem stackoverflow.com/questions/25134463/…
Nabin

Câu trả lời:


56

Sử dụng điều này để thay đổi màu gợi ý. -

editText.setHintTextColor(getResources().getColor(R.color.white));

Giải pháp cho vấn đề của bạn -

editText.addTextChangedListener(new TextWatcher() {
    @Override
    public void onTextChanged(CharSequence arg0, int arg1, int arg2,int arg3){
        //do something
    }

    @Override
    public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
        //do something
    }

    @Override
    public void afterTextChanged(Editable arg0) {
        if(arg0.toString().length() <= 0) //check if length is equal to zero
            tv.setHintTextColor(getResources().getColor(R.color.white));
    }
});

7
Tại sao một giải pháp phức tạp như vậy có thể được thực hiện trong nửa dòng, như anandc đã trả lời dưới đây.
zeeshan

8
bởi vì giải pháp đó không giải quyết được vấn đề của anh ta?
evaristokbza

318

Chỉ cần thêm điều này vào của bạn layoutcho EditText:

android: textColorHint = "# FFFFFF"


9
Làm thế nào điều này phải giải quyết câu hỏi của OP? câu hỏi là về làm thế nào để thay đổi màu sắc gợi ý tự động khi EditText có một số văn bản và tôi không thấy thế nào điều này sẽ giải quyết nó ...
evaristokbza

5
Vui lòng đọc kỹ câu hỏi. tác giả đã không hỏi một cách thích hợp.
Anand Chavan

22

Màu sắc mặc định:

android:textColorHint="@android:color/holo_blue_dark"

Đối với mã màu:

android:textColorHint="#33b5e5"

không thực hiện các chỉnh sửa này một cách cá nhân. Việc chỉnh sửa về cơ bản cải thiện khả năng đọc của câu trả lời và / hoặc cải thiện tính hoàn chỉnh của câu trả lời. Ngoài ra, nếu có thể, hãy thêm giải thích về mã khi cần thiết, chẳng hạn như những gì đang làm hoặc vấn đề mà OP đang gặp phải, v.v. :)
Sufian

15

Bên trong bố cục tệp Xml Chúng ta có thể thay đổi màu sắc của gợi ý .....

android:textColorHint="@android:color/*****"

bạn có thể thay thế * bằng màu sắc hoặc mã màu.


7

Có vẻ như EditText chỉ áp dụng hintTextColor nếu văn bản trống. Vì vậy, giải pháp đơn giản sẽ như thế này

Editable text = mEditText.getText();
mEditText.setText(null);
mEditText.setHintTextColor(color);
mEditText.setText(text);

Nếu bạn có nhiều trường, bạn có thể mở rộng EditText và viết một phương thức thực thi logic này và sử dụng phương thức đó thay thế.


6

Lập trình trong Java - Ít nhất API v14 +

exampleEditText.setHintTextColor(getResources().getColor(R.color.your_color));


1
trên samsung S5 apiV19 của tôi cũng gặp sự cố tương tự, như @dishan đã đề cập: setHintTextColor(color)không hoạt động trong trường hợp có một số văn bản, NGAY CẢ nếu có "".
Dmitry Gryazin

2

Đây giống như màu gợi ý mặc định, phù hợp với tôi:

editText.setHintTextColor(Color.GRAY);


0

Bạn có thể gọi editText.invalidate()sau khi đặt lại màu gợi ý. Điều đó có thể giải quyết vấn đề của bạn. Trên thực tế, SDK cập nhật màu theo cùng một cách.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.