2011-07-19 11 views
21

W mojej postaci używam setError("") w polu EditText. Mój Application-Theme rozszerza się o android:Theme.Holo.
Ręcznie ustawiłem obraz z ciemnym tłem dla android:errorMessageBackground i android:errorMessageBackgroundAbove.Który atrybut motywu zmienia kolor tekstu komunikatu EditText o błędzie

A teraz jest problem: kolor tekstu komunikatu o błędzie jest również bardzo ciemny i nieczytelny.

Próbowałem zmienić różne atrybuty textColor w moim motywie, ale nie udało mi się znaleźć prawidłowych.

Czy ktoś może mi pomóc? Dziękujemy! Chris

+6

Dobrze, znalazłem rozwiązanie. Właściwie nie mogłem znaleźć określonego atrybutu tematu, który powinien zostać przedłużony. Ale można ustawić # ffffffff na kolor nedded. To mi się udało. Nie koliduje to z innymi kolorami w mojej aplikacji, ponieważ ustawiam kolory tekstu dla każdego rodzaju elementu w jego własnym zestawie stylów. Mam nadzieję, że to pomoże. – Chris

+0

Dodaj to jako odpowiedź na własne pytanie. – Macarse

+1

Czy możesz mi powiedzieć, w jaki sposób udało Ci się ustawić tło za pomocą errorMessageBackground? Ustawiłem minSDK na 7 i cel na 16 i nie mogę używać tego atrybutu w motywie, ale otrzymuję tylko: error: Error: Nie znaleziono zasobu pasującego do podanej nazwy: attr 'errorMessageBackground' . Moje pytanie na temat tego: http://stackoverflow.com/questions/14127710/change-color-of-edittexts-error-message?lq=1 – scana

Odpowiedz

0

nie podążając manifest.xml

<resources> 
    <style name="LightErrorFix" parent="@android:style/Theme.Light"> 
     <item name="android:textColorSecondaryInverse">@android:color/secondary_text_light</item> 
    </style> 
</resources> 
0

ustawić właściwość android:textColorPrimaryInverse="YourCOLOR" do koloru nedded.

0

Zakładając zrobiłeś czegoś takiego:

EditText text = (EditText) findViewById(R.id.myedittext); 

można wykonać następujące czynności:

text.setTextColor(Color.parseColor("#FFFFFF")); 

lub

text.setTextColor(Color.rgb(200,0,0)); 

lub jeśli chcesz/potrzebujesz lpha:

text.setTextColor(Color.argb(0,200,0,0)); 

Tak czy inaczej, należy podać swoje kolory w color.xml (wayyy lepiej być utrzymane):

<color name="myColor">#f00</color> 

a następnie używać go tak:

text.setTextColor(getResources().getColor(R.color.myColor)); 

Miłej zabawy :)

+1

Czy to nie zmieni koloru EditText, a nie popover błędu? –

+0

nie zmienia to koloru komunikatu o błędzie – commonSenseCode

1

Możesz wypróbować ten:

editText.setError(Html.fromHtml("<font color='red'>Error Message!</font>")); 
0

Moja odpowiedź działa, jest w kotlinach.

private fun setErrorOnSearchView(searchView: SearchView, errorMessage: String) { 
    val id = searchView.context 
      .resources 
      .getIdentifier("android:id/search_src_text", null, null) 
    val editText = searchView.find<EditText>(id) 

    val errorColor = ContextCompat.getColor(this,R.color.red) 
    val fgcspan = ForegroundColorSpan(errorColor) 
    val builder = SpannableStringBuilder(errorMessage) 
    builder.setSpan(fgcspan, 0, errorMessage.length, 0) 
    editText.error = builder 
}