Android Imagebutton更改Image OnClick

use*_*415 30 android image imagebutton

我刚drawableres文件夹下添加了一个新文件夹.在drawable文件夹中,我ic_launcher.pngdrawable-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);

    }
};
Run Code Online (Sandbox Code Playgroud)

编辑:我改为这个,这也行不通.

@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);

    }
};
Run Code Online (Sandbox Code Playgroud)

编辑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);

    }
};
Run Code Online (Sandbox Code Playgroud)

小智 58

这误导了我一点 - 应该是:) setImageResource而不是setBackgroundResource:)!

以下工作正常:

ImageButton btn = (ImageButton)findViewById(R.id.imageButton1);       
 btn.setImageResource(R.drawable.actions_record);
Run Code Online (Sandbox Code Playgroud)

而当使用setBackgroundResource实际图像按钮的图像停留时,背景图像被更改,这导致丑陋的imageButton对象

谢谢.


mis*_*anc 11

<ImageButton android:src="@drawable/image_btn_src" ... />
Run Code Online (Sandbox Code Playgroud)

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>
Run Code Online (Sandbox Code Playgroud)


Car*_*nal 9

那是因为imgButton为null.试试这个:

findViewById(R.id.imgButton).setBackgroundResource(R.drawable.ic_action_search);
Run Code Online (Sandbox Code Playgroud)

或者更容易阅读:

imgButton = (Button) findViewById(R.id.imgButton);
imgButton.setOnClickListener(imgButtonHandler);
Run Code Online (Sandbox Code Playgroud)

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