2013-05-02 12 views
14

To nie wygląda ładnie, gdy używasz EditText enabled = "false". Jak mogę go automatycznie zmienić dla wszystkich elementów sterujących?Jak zmienić domyślny styl wyłączonego EditText?

Dodałem ten obraz w celach informacyjnych. enter image description here

Czy ktoś może mi pomóc? Dzięki.

+0

Czy ustawiłeś atrybut 'android: background =" .... "' na 'EditText'? –

+0

Jeśli zmienię Androida: tło w style.xml zmienia cały EditText, nie tylko wyłączony. Chciałbym wiedzieć, czy mogę zmienić domyślnie wyłączony styl EditText, a nie jeden po drugim. –

Odpowiedz

27

W pliku koloru zdefiniować kolor:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_enabled="false" android:color="@color/disabled_color" /> 
    <item android:color="@color/normal_color"/> 
</selector> 

w układzie:

<EditText 
    android:text="whatever text you want" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:textColor="@color/example" /> 
</EditText> 
+0

Potrzebuję obu stanów, włączonych i wyłączonych. Jeśli spróbuję z kodem (zaadaptowanym), mój edittext pozostanie niewidoczny (ponieważ nie otrzyma poprawnych params) i dziennik pokazuje mi ten błąd: znacznik wymaga atrybutu "losowania" lub znacznika podrzędnego definiującego ciągnięcie –

+0

czy mogę to zrobić programowo ... ?? – Moinkhan

+0

Selektory muszą być zdefiniowane w katalogu 'drawable' (nie' color'). –

36

Utwórz selektor niestandardowego w kanału alfa i ustawić go jako

<EditText android:textColor="@drawable/edit_text_selector" />

1) w "colors.xml" d efine kolor na aktywnym i nieaktywnym stanie:

<color name="enabled_color">#F7FE2E</color> 
<color name="disabled_color">#000000</color> 

2) w 'rozciągliwej/edit_text_selector.xml':

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_enabled="false" android:color="@color/disabled_color"/> 
    <item android:color="@color/normal_color"/> 
</selector> 

3) w swoim layout.xml:

<EditText 
    android:id="@+id/customEditText" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:enabled="false" 
    android:text="Hello!" 
    android:textColor="@drawable/edit_text_selector" /> 
+0

Niesamowite podejście !. Wielkie dzięki! – KinGPinG

+0

Znam jego stary, ale @ color/normal_color powinien prawdopodobnie być @ color/enabled_color – dan

Powiązane problemy