EditText의 setHintTextColor ()


88

두 개의 텍스트 상자가있는보기가 있으며 사용자는 동일한 화면 (대화 상자를 통해)의 다른보기에서 텍스트 색상을 선택할 수 있습니다.

따라서 사용자가 대화 상자를 통해 색상을 변경할 때 EditText텍스트의 색상 과 힌트를 변경합니다 . 그러나 EditText사용자가 다른 색상을 선택한 후 사용할 수있는 텍스트가 있으면 해당 텍스트가 해당 색상으로 표시됩니다. 그러나 해당 텍스트를 모두 제거하면 HintText 의 색상은 이전 색상의 색상입니다.

예를 들어 현재 텍스트 상자에 빨간색이 있고 사용자가 녹색을 선택하면 텍스트가 녹색으로 표시됩니다. 그러나 해당 텍스트를 제거하면 코드에서 힌트 색상변경 하더라도 힌트 텍스트가 빨간색으로 표시 됩니다. 이 문제는 텍스트가있을 때만 발생합니다. 비어 있고 힌트 텍스트가 있으면 문제가 발생하지 않습니다.


답변:


57

힌트 색상을 변경할 때 사용합니다. -

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

문제에 대한 해결책-

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
anandc가 아래에 대답 한 것처럼 반 줄로 수행 할 수있는 복잡한 솔루션이 왜 그런지.
zeeshan 2014 년

8
그 해결책이 그의 문제를 해결하지 못해서요?
evaristokbza 2014-06-05

318

다음을 layout위해 간단히 추가 하십시오 EditText.

android : textColorHint = "# FFFFFF"


9
이것이 OP의 질문을 어떻게 해결해야합니까? 질문은 글고 일부 텍스트가있을 때 동적으로 힌트 색상을 변경하는 나는이 그것을 해결하는 방법이 표시되지 않는 방법에 관한 것입니다 ...
evaristokbza

5
질문을주의 깊게 읽으십시오. 저자는 적절한 방식으로 요청하지 않았습니다.
Anand Chavan 2014-06-11

22

기본 색상 :

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

색상 코드 :

android:textColorHint="#33b5e5"

이러한 편집을 개인적으로 받아들이지 마십시오. 편집은 기본적으로 답변의 가독성을 높이거나 답변의 완성도를 향상시킵니다. 또한 해당되는 경우 필요한 경우 작업이 무엇인지 또는 OP가 직면 한 문제와 같은 코드에 대한 설명을 추가합니다. :)
Sufian

15

내부 레이아웃 Xml 파일 힌트의 색상을 변경할 수 있습니다 .....

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

* 를 색상 또는 색상 코드로 바꿀 수 있습니다 .


7

EditText 는 텍스트가 비어있는 경우에만 hintTextColor를 적용하는 것 같습니다 . 그래서 간단한 해결책은 다음과 같습니다.

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

여러 필드가있는 경우 EditText를 확장하고이 논리를 실행하는 메서드를 작성하고 대신 해당 메서드를 사용할 수 있습니다.


6

프로그래밍 방식으로 Java-최소 API v14 +

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


1
내 삼성 S5 apiV19에서 @dishan이 언급했듯이 동일한 문제 setHintTextColor(color)가 있습니다. 텍스트가있는 경우에도 작동하지 않습니다 "".
Dmitry Gryazin

2

이것은 기본 힌트 색상과 같으며 나를 위해 일했습니다.

editText.setHintTextColor(Color.GRAY);


0

editText.invalidate()힌트 색상을 재설정 한 후 호출 할 수 있습니다. 그러면 문제가 해결 될 수 있습니다. 실제로 SDK는 동일한 방식으로 색상을 업데이트합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.