我在Android应用中使用自定义操作栏,右侧有自定义ImageButton
,并以编程方式添加了onClick行为(请参阅下面的代码段)。
按钮的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
的背景颜色(无需使用其他图形),以便在用户点击按钮时背景会发生变化(点击背景后)应该恢复正常,即透明)。我该怎么做?
答案 0 :(得分:1)
为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>
答案 1 :(得分:0)
invalidate()
方法将强制重绘任何视图:
尝试使用:
mRefreshButton = (ImageButton) findViewById(R.id.btn_refresh);
mRefreshButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Drawable replacer = getResources().getDrawable(R.drawable.replacementGraphic);
mRefreshButton .setBackgroundDrawable(replacer);
mRefreshButton .invalidate();
}
});
请参阅here以供参考。
答案 2 :(得分:0)
要更改颜色,您可以使用以下
Btn.setBackgroundColor(Color.BLUE);
重新设置透明
Btn.setBackgroundColor(Color.parseColor("#000000"));