android - 以编程方式更改 ImageButton 的背景

标签 android onclick onclicklistener android-imagebutton

我在 Android 应用程序中使用自定义操作栏,该应用程序右侧有自定义 ImageButton,它们的 onClick 行为以编程方式添加(请参见下面的代码 fragment )。

按钮的 XML 源代码

<ImageButton
        android:id="@+id/btn_refresh"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:layout_toLeftOf="@+id/btn_right_menu"
        android:background="@null"
        android:contentDescription="@string/image_description"
        android:onClick="refresh"
        android:padding="10dp"
        android:src="@drawable/button_refresh" />

OnClickListener 来源

mRefreshButton = (ImageButton) findViewById(R.id.btn_refresh);
mRefreshButton.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {
            doSomething();
    }
});

我想以编程方式更改我的 ImageButton 的背景颜色(无需使用额外的图形),以便当用户单击按钮时背景会发生变化(在单击背景应该恢复正常,即透明)。我该怎么做?

最佳答案

为您的 ImageButton 使用选择器并从 xml 设置背景。

如果您想使用可绘制图像:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
        <item android:state_pressed="true"
            android:drawable="@drawable/pressed_bg" /> <!-- pressed -->
        <item android:state_focused="true"
            android:drawable="@drawable/focused_bh" /> <!-- focused -->
        <item android:drawable="@drawable/default_bg" /> <!-- default -->
</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="@android:color/white" />    
     <item android:state_pressed="true" android:drawable="@android:color/white" />
     <item android:drawable="@android:color/transparent" />
</selector>

关于android - 以编程方式更改 ImageButton 的背景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23535453/

相关文章:

javascript - 如何在 Javascript 函数中停止执行 Click 事件?

javascript - 在加载 jQuery 之前阻止链接

android - onListItemClick 在 Android 4.1.2 中不起作用

java - 查看对象不可点击 - 使用 OnClickListener

Android map - 边移动边绘制折线

android - 程序流程 AppInventor

javascript - 单击 JS 不起作用

java - Android 按钮 onClickListener

android - 如何向外部企业发布 B2B Android 应用程序

java - Android 在后台调用 Activity