单击时更改ImageButton的src

时间:2016-01-20 11:54:25

标签: android android-imagebutton

我正在做一个Android应用程序,我在其中放置了一个图像按钮。我给了一个默认的图像源。当我点击图像时,它应该将图像源更改为另一个,如果我再次按下图像,我应该恢复默认图像。

就像在两张图片之间切换一样。但由于我的应用程序的要求,我不想使用toggleButton。

2 个答案:

答案 0 :(得分:1)

如果你不想要与切换有任何关系,你必须保留一个计数器。

XML:

<android.support.v7.widget.AppCompatImageButton
        android:id="@+id/button"
        android:layout_width="10dp"
        android:layout_height="match_parent"
        android:src="@mipmap/original"
        android:background="@color/original"/>

的活动:

public class Activity extends AppCompatActivity {

    int clickcounter = 0;        

    @Bind(R.id.button)
    ImageButton Button;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        //Butter Knife
        ButterKnife.bind(this);

        //Hook up the OnClick Listener
        feedButton.setOnClickListener(feedButtonHandler);

    }

View.OnClickListener feedButtonHandler = new View.OnClickListener() {
    public void onClick(View v) {
        clickcounter = clickcounter + 1;
        if (clickcounter % 2 == 1) {
        // setImageResource is the method for setting imagebutton's src in xml
        Button.setImageResource(R.mipmap.new);
        // setBackgroundResource is the method for setting imagebutton's background in xml
        Button.setBackgroundResource(R.color.new);
        }

        if (clickcounter % 2 == 0) {
        Button.setImageResource(R.mipmap.original);
        Button.setBackgroundResource(R.color.original);
        }
    };
}

但切换是一种更简单的方法。

答案 1 :(得分:0)

ImageButton:

<ImageButton
    android:id="@+id/imagebutton"
    android:layout_width="250dp"
    android:layout_height="100dp" 
    android:background="@drawable/img_btn_selector"/>

img_btn_selector:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
 <item android:state_selected="true" android:drawable="@drawable/img_selected" />
    <item android:drawable="@drawable/img_un_selected" />    
</selector>

Activity:

imgBtn.setOnClickListener(new OnClickListener() {

       public void onClick(View button) {
           if (button.isSelected()){
               button.setSelected(false); 
           } else {
               button.setSelected(true);
           }
       }
   });