2012-05-06 13 views
6

Я создал button в layout. В папке Drawable я создал XML file по имени btn01_state. btn01_state.xml присваивается button я, созданного с помощью «android:[email protected]/btn01_state»Как изменить изображение кнопки при каждом нажатии?

Теперь button имеет значение по умолчанию image img1.when я click на button, изменения image1 к Img2, и как только я отпустить Clicked кнопку мыши, image2 снова снова изменился на img1.

что я хочу сделать, чтобы изменить изображение кнопки с щелчком evey.

для примера, первоначально btn01 имеет img01

если btn01 нажимается ==> набор ИМГ btn01 в img02 и держать img02 пока btn01 нажата снова. Теперь btn01 имеет img02.

При нажатии btn01 установите img01 в btn01.

Надеюсь, это разъяснило больше, что я хочу сделать.

btn_selector:

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:drawable="@drawable/android_blue" 
     android:state_pressed="true" /> 
<item android:drawable="@drawable/ic_launcher" 
     android:state_focused="true" /> 
<item android:drawable="@drawable/ic_launcher" /> 

main.xml

<Button 
    android:layout_height="wrap_content" 
    android:layout_width="wrap_content" 
    android:id="@+id/btn01" 
    android:background="@drawable/btn01_state"/> 

ответ

17

Вы можете сделать это легко в коде.

boolean isPressed = false; 
button.setOnClickListener(buttonListener); 

OnClickListener buttonListener = new OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     if(isPressed) 
      button.setBackgroundResource(R.drawable.icon1); 
     else 
      button.setBackgroundResource(R.drawable.icon2); 

     isPressed = !isPressed; 
    } 
}; 
+0

perfect ..... :) – Androelpha

+0

Не работает со мной. Он только вызывает onClick при нажатии кнопки, а не при отпускании кнопки. Таким образом, он будет делать только одну ветвь при каждом нажатии. –

+0

@ZdravkoDonev - это потому, что оп попросил изменить изображение кнопки с помощью кликов, а не касаний. Если вы хотите изменить состояние кнопки, вы должны, вероятно, проверить эту ссылку - http://stackoverflow.com/a/14024007/1376688 –

0

сделать это в коде, возможно. Поместите слушателя на кнопку, и при нажатии кнопки фон будет изменен.

1

Простой способ

btn.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View arg0) { 
       // TODO Auto-generated method stub 
    btn.setBackgroundDrawable(getResources().getDrawable(R.drawable.locationbutton_on)); 
       } 
     }); 
Смежные вопросы