2011-01-14 12 views
205

zrobiłem przycisk, który zmienia rozciągliwej tła w różnych stanach, w ten sposób:Dostosowany do systemu Android przycisk; zmienia kolor tekstu

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:state_pressed="true" android:drawable="@drawable/btn_location_pressed" /> <!-- pressed --> 
<item android:state_focused="true" android:drawable="@drawable/btn_location_pressed"/> <!-- focused --> 
<item android:drawable="@drawable/btn_location"/> <!-- default --> 

Problem polega na tym, że ja też próbuje zmienić textColor jak zrobić z losowanie, ale nie jestem w stanie. Próbowałem już Androida: textColor i android: kolor, ale pierwszy nie działa, podczas gdy sekundy zmieniają moje tło.

Następny kod jest częścią mojego układu. W odniesieniu do koloru tekstu działa tylko do normalnego koloru tekstu stan, więc nie zmieniając go do białej jedną chwilę wciśnięty

<Button android:id="@+id/location_name" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:paddingTop="5dp" 
     android:background="@drawable/location"   
     android:textSize="15sp" 
     android:textColor="@color/location_color" 
     android:textColorHighlight="#FFFFFF" 
    /> 

Czy ktoś ma pojęcia?

Odpowiedz

497

Tworzenie pełnostanowego kolor dla przycisku, tak jak to robił do tła, na przykład:

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_focused="true" android:state_pressed="false" android:color="#ffffff" /> 
    <item android:state_focused="true" android:state_pressed="true" android:color="#000000" /> 
    <item android:state_focused="false" android:state_pressed="true" android:color="#000000" /> 
    <item android:color="#ffffff" /> 
</selector> 

Umieść xml w pliku na RES/odkształcalne folderu tj res/odkształcalne/button_text_color.xml. Następnie wystarczy ustawić rozciągliwej jako kolor tekstu:

android:textColor="@drawable/button_text_color" 
+13

Zauważ, że (dla mnie przynajmniej) istnieje błąd, w którym musi być umieszczony "normalny" stan ( w twojej odpowiedzi) na końcu pliku jak w Twojej odpowiedzi. Umieszczenie stanu normalnego u góry pliku (nad innymi stanami) powoduje, że selektor nie działa. –

+51

to nie jest błąd. W ten sposób ma działać wybór stanu. To nie jest najlepszy pojedynek, zamiast tego pierwszy, który pasuje, przetrwa. – superjos

+0

Jak to zrobić z wartością całkowitą? Próbuję zrobić coś podobnego z dopełnieniem tekstu. – elimirks

14

Innym sposobem na to jest w swojej klasie:

import android.graphics.Color; // add to top of class 

Button btn = (Button)findViewById(R.id.btn); 

// set button text colour to be blue 
btn.setTextColor(Color.parseColor("blue")); 

// set button text colour to be red 
btn.setTextColor(Color.parseColor("#FF0000")); 

// set button text color to be a color from your resources (could be strings.xml) 
btn.setTextColor(getResources().getColor(R.color.yourColor)); 

// set button background colour to be green 
btn.setBackgroundColor(Color.GREEN); 
+1

Spowoduje to zmianę koloru tekstu na przycisku, ale pozostanie tym kolorem w różnych stanach przycisku (np. Naciśnięty). W większości scenariuszy, kiedy kolor tła przycisku zmienia się podczas stanu, pożądana jest również zmiana koloru tekstu przycisku, to właśnie tutaj przydaje się odpowiedź @Konstantina Burowa. –

+0

to nie ustawi różnych kolorów dla każdego stanu ... –

+0

To nie odpowiada na oryginalne pytanie. Pytanie brzmi, jak zdefiniować kolory oparte na stanie do widoku tekstowego, tak jak można ustawić rysunki oparte na stanie. – alchemist

1

Zmiana koloru tekstu przycisku

Ponieważ metoda ta jest obecnie nieaktualnych

button.setTextColor(getResources().getColor(R.color.your_color)); 

Używam:

button.setTextColor(ContextCompat.getColor(mContext, R.color.your_color)); 
2

ok bardzo prosty Skocz na 1. res-valuse i otwarty colors.xml 2.copy 1 z określonym tekstem ich na przykład # FF4081 i zmienić nazwę instancji i zmienił kolor na biały i zmiany jego wartość na przykład ja zmieniona na #FFFFFF na białym wartości jak ten

<color name="White">#FFFFFF</color> 

następnie wewnątrz przycisku dodać tę linię

b3.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.White)); 

ok b3 to nazwa mojego przycisku, więc zmieniono nazwę przycisku ur wszystkie pozostałe będą takie same, jeśli użyjesz białego koloru, jeśli zmienisz inny kolor, a następnie zmienisz biały na nazwę koloru, ale najpierw zdefiniujesz ten kolor w kolorach .xml jak wyjaśniłem na stronie 2

Powiązane problemy