当前位置: 首页 > 知识库问答 >
问题:

Android图像按钮更改图像OnClick

白烨煜
2023-03-14

我刚刚在文件夹下添加了一个新的可绘制文件夹。在drawable文件夹中,我复制了ic\U启动器。png文件来自可绘制hdpi文件夹。当我按下按钮时,我想通过新的图像更改标准的图像按钮。我写了一些代码,但当我启动应用程序时,它崩溃了。

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

    }
};

共有3个答案

郏正信
2023-03-14

这是因为imgButton为null。请尝试以下操作:

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

或者更容易阅读:

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

然后在onClick中:img按钮。setBackgroundResource(R.drawable.ic\u action\u search)

洪浩
2023-03-14
<ImageButton android:src="@drawable/image_btn_src" ... />

image\u btn\u 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>
滕翔飞
2023-03-14

这让我有点误会-它应该是setImageResource,而不是setBackgroundResource!!

以下工作很好:

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

当使用setBackgroundResource时,实际的imagebutton图像会保持不变,而背景图像会发生变化,这会导致imagebutton对象看起来很难看

谢谢

 类似资料:
  • 我 https://github.com/futuresimple/android-floating-action-button 使用了这个库。如何更改主按钮的图像?我想在选择其中一个较小的按钮后立即更改按钮图像。

  • 我能找到的每个更改按钮图像的示例都显示了当单击该按钮时如何更改它。但是我如何点击一个切换按钮,并让它改变一个常规按钮的图像呢? 关于更多细节,我有两个按钮和一个onCheckedChanged事件: 当按下切换按钮并发生onCheckedChanged事件时,我需要将btn1的背景设置为新图像。

  • 我想用一个按钮在三个不同的位置改变图像的位置...用我的代码图像只移动了一个位置... ViewController.h ViewController.m }

  • 快速提问,如何在fxml中让图像覆盖整个按钮。 因此,按钮的所有可见部分都是边框。由于某种原因,当我试图调整图像大小以适应按钮时,它会自动调整大小。我在使用场景生成器。我正在使用FXML。 按钮大小为prefHeight=“38.0”prefWidth=“50.9990000002526”。 记住我不想看到按钮的背景。我希望它被一张图片覆盖。 谢谢,你们帮了大忙。

  • 我正在使用javaFX。我做了一个按钮并为此设置了一个图像。代码是: 但是我想当我点击按钮时,图像会变成另一张图片。我该怎么做呢?

  • 问题内容: 我期望以下两个脚本具有相同的输出。 但是执行 脚本1 时,按钮上没有显示图像。但是, 脚本2 效果很好。 脚本1 剧本2 问题答案: 对图像对象的唯一引用是局部变量。当退出时,被当作垃圾回收的局部变量,因此图像被破坏。在第二个示例中,由于映像是在全局级别创建的,因此它永远不会超出范围,因此也不会进行垃圾回收。 要解决此问题,请保存对图像的引用。例如,代替use 。