Android的ImageButton的变化图像的OnClick(Android Imagebutt

2019-06-27 18:30发布

我只是增加了一个新的drawable文件夹下的res文件夹。 在drawable文件夹,我复制了ic_launcher.png从文件drawable-hdpi的文件夹。 我想更改标准ImageButton通过新的图像时,我按下按钮。 我写了一些代码,但是当我启动应用程序,它崩溃。

Button imgButton; 

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    findViewById(R.id.imgButton).setOnClickListener(imgButtonHandler);      
}

View.OnClickListener imgButtonHandler = new View.OnClickListener() {

    public void onClick(View v) {

        imgButton.setBackgroundResource(R.drawable.ic_launcher);

    }
};

编辑:我改变了这一点,这也不能工作。

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    imgButton = (Button) findViewById(R.id.imgButton);
    imgButton.setOnClickListener(imgButtonHandler);
}


View.OnClickListener imgButtonHandler = new View.OnClickListener() {

    public void onClick(View v) {
        imgButton.setBackgroundResource(R.drawable.ic_launcher);

    }
};

编辑2:这个作品。 谢谢大家。

ImageButton button;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    button= (ImageButton)findViewById(R.id.imgButton);
    button.setOnClickListener(imgButtonHandler);
}


View.OnClickListener imgButtonHandler = new View.OnClickListener() {

    public void onClick(View v) {
        button.setBackgroundResource(R.drawable.ic_launcher);

    }
};

Answer 1:

这误导了我一点-它应该是setImageResource代替setBackgroundResource :)!

以下工作正常:

ImageButton btn = (ImageButton)findViewById(R.id.imageButton1);       
 btn.setImageResource(R.drawable.actions_record);

使用时,同时setBackgroundResource实际的ImageButton的形象停留而背景图像改变这导致难看的ImageButton对象

谢谢。



Answer 2:

<ImageButton android:src="@drawable/image_btn_src" ... />

image_btn_src.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:drawable="@drawable/icon_pressed"/>
<item android:state_pressed="false" android:drawable="@drawable/icon_unpressed"/>
</selector>


Answer 3:

这是因为imgButton为空。 试试这个:

findViewById(R.id.imgButton).setBackgroundResource(R.drawable.ic_action_search);

或更容易阅读:

imgButton = (Button) findViewById(R.id.imgButton);
imgButton.setOnClickListener(imgButtonHandler);

然后在的onClick: imgButton.setBackgroundResource(R.drawable.ic_action_search);



Answer 4:

你可以这样做的权利在你的XML文件:

android:onClick="@drawable/ic_action_search"


Answer 5:

你已经assing按钮,您imgButton变量:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    imgButton = (Button) findViewById(R.id.imgButton);
    imgButton.setOnClickListener(imgButtonHandler);
}


文章来源: Android Imagebutton change Image OnClick