2012-10-20 11 views
13

Jestem nowicjuszem na Androida i Javie, ale udało mi się nauczyć siebie i znaleźć odpowiedzi na większość pytań na stackoverflow bez konieczności zadawania pytań. Do tej pory ....Przycisk Zmień na androida: tło dla różnych rysunków

Oto, mam wiele kolorowych przycisków, które po kliknięciu zmieniają kolor na szereg różnych kolorów.

Istnieje wiele przycisków zdefiniowane na przykład jako:

<Button 
    android:id="@+id/button17" 
    android:layout_width="0dp" 
    android:layout_height="fill_parent" 
    android:layout_weight="1" 
    android:background="@drawable/orange_button" 
    android:gravity="center" 
    android:onClick="onClick" /> 

Czy ktoś mógłby mi doradzić, jak zmienić android tło za pomocą kodu, aby zmienić powyższy przykład do żółtego, na przykład, gdy przycisk zostanie kliknięty .

W poniższym kodzie clickedButton jest identyfikatorem przycisku, dla którego potrzebuję zmienić tło.

public void onClick(View v) { 
    int id=v.getId(); 
    String clickedButton = getResources().getResourceEntryName(id); 

    Change button to Yellow here?? 

    // Temporary code below to check which button was pressed 
    // and convert its number to an integer to eventually access an array 

    final TextView tvGameTimer = (TextView) findViewById(R.id.tvGameTimer); 
    int buttonNumber = Integer.parseInt(clickedButton.substring(6,8)); 
    tvGameTimer.setText("" + buttonNumber); 

    } 

Używam style niestandardowy przycisk, aby zdefiniować przycisk kolory:

res/drawable/yellow_button.xml 
res/drawable/blue_button.xml 
res/drawable/red_button.xml 
res/drawable/orange_button.xml 
res/drawable/green_button.xml 

Na razie wystarczy, aby dowiedzieć się, jak zmienić przycisk z pomarańczowego na żółty. Mogę następnie dodać logikę, aby zmienić kolory, kiedy i kiedy wymagana jest aplikacja.

Wielkie dzięki za pomoc.

Odpowiedz

20

Przypuszczam, że opublikowana przez ciebie metoda onClick ma ten sam przycisk, którego tło chcesz zmienić. Użyj tego kodu.

v.setBackgroundResource(R.drawable.yellow_button); 

Jeśli onClick nie jest metodą z tego samego przycisku, a następnie użyć

findViewById(R.id.button17).setBackgroundResource(R.drawable.yellow_button); 
+1

Wow. Co za społeczność! Spot na miejscu. Metoda onClick znajduje się na tym samym przycisku, który muszę zmienić, aby Twoje pierwsze rozwiązanie działało po raz pierwszy. Teraz wszystkie przyciski zmieniają kolor na żółty po kliknięciu! Mogę teraz naciskać z logiką. Dzięki. –

+0

Gdy zostawiam aktywność innej czynności i powrócę do pierwszej, tło nie powraca do oryginalnego losowania. – Si8

+0

@ SiKni8 dla efektu, który chcesz, powinieneś użyć jaimin

2
Button btn = (Button) findViewById(R.id.button17); 
btn.setBackground(this.getResources().getDrawable(R.drawable.yellow_button)); 

Spróbuj tego.

+0

Sposób getDrawable (int) z zasobów typu jest przestarzała. –

Powiązane problemy