2013-04-04 13 views
6

Mam następujący kod do przycisku w pliku layoutu dla mojej aplikacjiPrzycisk kulminacyjnym w android

<Button 
    android:id="@+id/button2" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" 
    android:layout_alignParentRight="true" 
    android:text="Start updating" /> 

domyślnie po naciśnięciu przycisku jej kolor podświetlenia niebieski. Jak mogę zmienić na kolor chcę (i ma to być karmazynowy)

+1

Czy to pomoże? http://stackoverflow.com/questions/3882064/how-to-change-color-of-button-in-android-when-clicked – Jackles

Odpowiedz

17

Przycisk ma set of states że can be configured tak:?

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:drawable="@color/your_color" 
     android:state_pressed="true" /> 
    <item android:drawable="@color/your_color" 
     android:state_focused="true" /> 
</selector> 

Można utworzyć to jako plik w OZE/drawables folder, a następnie użyj go w swoim przycisku jako tła. Supose że ten plik o nazwie „my_button.xml” można następnie używać go tak:

<Button 
    android:background="@drawable/my_button" 

Albo tak:

my_button.setBackgroundDrawable(getResources().getDrawable(R.drawable.my_button)); 

Twój kolor może być zdefiniowana w colors.xml w OZE/folder wartości. Jeśli nie masz tego pliku, możesz go utworzyć (Android go rozpozna). To jest dobra praktyka, ale możesz również zastąpić your_color przez # DC143C w powyższym kodzie.

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <color name="your_color">#DC143C</color> 
</resources> 

Należy pamiętać, że ten kolor jest już ustawiony na crimson.

Możesz także dodać obraz tła, zastępując "@ color/your_color" przez "@ drawable/your_image".

Aby uzyskać więcej informacji, można śledzić this link w stackoverflow.

+0

Nie mogę znaleźć pliku colors.xml w res/values ... mogę znaleźć tylko pliki styles.xml i strings.xml – gedo

+0

Musisz je utworzyć. Dobrze jest to zrobić, ponieważ masz plik ze wszystkimi potrzebnymi kolorami. Możesz również zastąpić swój_kolor bezpośrednio za pomocą # DC143C. Tworzenie pliku nie jest obowiązkowe. Tylko dobra praktyka. –

+1

Jako notatkę boczną można również utworzyć plik dimens.xml do przechowywania wartości wymiarów (na przykład przy ustawianiu szerokości lub wysokości). Wartości te można uzyskać przez @ dimen/my_dimen. –

6

Utwórz następujący plik xml w folderze do rysowania. I ustaw tło przycisków do tego losowania.

<?xml version="1.0" encoding="utf-8"?> 
    <selector xmlns:android="http://schemas.android.com/apk/res/android"> 

     <!-- Image display in background in select state --> 
     <item android:drawable="@drawable/button_pressed" android:state_pressed="true"/> 

     <!-- Image display in background in select state --> 
     <item android:drawable="@drawable/button_pressed" android:state_focused="true"/> 

     <!-- Default state --> 
     <item android:drawable="@drawable/button"/> 

    </selector> 
4

Co trzeba to selektor, jego prosty plik odkształcalne, w którym można zmienić kolory na przykład swojego przycisku w zależności od jego stanu, na przykład:

<?xml version="1.0" encoding="utf-8"?> 
<selector 
    xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item 
    android:state_focused="true" 
    android:drawable="@color/white"/> 
    <item 
    android:state_pressed="true" 
    android:drawable="@color/white"/> 
    <item android:drawable="@color/red" /> 
</selector> 
1

Aby dostać się do prawidłowego zasób tutaj jest dokumentacją StateList Drawable.
check this link

Wystarczy utworzyć i zdefiniować go w swoim podkatalogu res/drawable i ustawić jako tło przycisków.

0

Można zdefiniować kolor na wszystkich kontroli jak ten

<style name="AppTheme.Base" parent="Theme.AppCompat.Light.DarkActionBar"> 
     <!-- Some attributes like windowNoTitle, windowActionBar, ... --> 
     <item name="colorControlHighlight">@color/colorAccent</item> <!-- chose the color here --> 
</style> 
Powiązane problemy