2012-05-06 24 views
6

layoutbuttonを作成しました。 Drawableフォルダにはbtn01_stateというXML fileが作成されました。 btn01_state.xmlが今「android:[email protected]/btn01_stateクリックごとにボタンの画像を変更するにはどうすればよいですか?

を通じて、私が作成したbuttonに割り当てられている、buttonbuttonに私clickデフォルトimage img1.when、IMG2にImage1の変更を持っている、と私はクリックされたマウスボタンを離すと、 image2が再度img1に変更されました。

私がしたいことは、eveyクリックでボタンの画像を変更することです。 img02とbtn01が再び押されるまでimg02を維持するbtn01の==>セットのIMGをbtn01押された場合例えば

は、最初に btn01はimg01

を持っています。今、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

完璧..... :) – Androelpha

+0

私とは機能しません。ボタンが押されたときだけonClickが呼び出され、ボタンが離されたときは呼び出されません。したがって、クリックごとにブランチの1つだけを実行します。 –

+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)); 
       } 
     }); 
関連する問題