如何为ImageButton
或AppCompatImageButton
使用背景色调?请回答XML和Java。
我找到了一个java解决方案,说我最常使用setBackgroundTintList()
,但是当我使用它时,背景总是显示蓝色而不会在点击时改变。
这就是我的尝试:
mButtonBold.setSupportBackgroundTintList(new ColorStateList(
new int[][]{EMPTY_STATE_SET, PRESSED_ENABLED_STATE_SET},
new int[]{Color.BLUE, Color.GREEN}
))
答案 0 :(得分:10)
首先你的数组顺序是错误的。默认值必须是最后一个状态,因此请使用以下状态:
mButtonBold.setSupportBackgroundTintList(new ColorStateList(
new int[][]{PRESSED_ENABLED_STATE_SET,EMPTY_STATE_SET},
new int[]{Color.GREEN,Color.BLUE}
))
<强> XML 强>
<android.support.v7.widget.AppCompatImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_done"
app:backgroundTint="@drawable/background"
app:backgroundTintMode="src_over"/>
<强>抽拉/背景强>
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/colorAccent" android:state_pressed="true" />
<item android:color="@color/colorPrimary" />
</selector>
<强> JAVA 强>
如果考虑布局是这样的:
<android.support.v7.widget.AppCompatImageButton
android:id="@+id/imageButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_done" />
然后:
AppCompatImageButton imageButton = (AppCompatImageButton)findViewById(R.id.imageButton);
imageButton.setSupportBackgroundTintList(new ColorStateList(
new int[][]{new int[]{android.R.attr.state_pressed},
new int[]{}
},
new int[]{Color.GREEN,Color.BLUE}
));
imageButton.setSupportBackgroundTintMode(PorterDuff.Mode.SRC_OVER);
如果您打算使用SDK小部件,请使用android
前缀而不是app
其中
xmlns:app="http://schemas.android.com/apk/res-auto"
和
xmlns:android="http://schemas.android.com/apk/res/android"
答案 1 :(得分:1)
更改 JAVA 代码中的色调:
imageView.setColorFilter(Color.argb(255, 255, 0, 0)); // RED Tint
更改 XML 代码中的色调:
android:tint="@color/red"
答案 2 :(得分:0)
设置按钮的背景色调:
我有一个xml提示:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:color="#ffff0000"/>
<!-- pressed -->
<item android:state_focused="true" android:color="#ff0000ff"/>
<!-- focused -->
<item android:color="#ff000000"/>
<!-- default -->
</selector>
然后将背景设置为按钮:
button.setBackgroundResource(R.drawable.yourbackgroundbutton);
答案 3 :(得分:0)
final AppCompatImageButton imageButton = (AppCompatImageButton)findViewById(R.id.imageButton);
imageButton.setSupportBackgroundTintList(new ColorStateList(
new int[][]{new int[]{android.R.attr.state_selected},
new int[]{}
},
new int[]{Color.GREEN,Color.BLUE}
));
imageButton.setSupportBackgroundTintMode(PorterDuff.Mode.SRC_OVER);
imageButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
imageButton.setSelected(!imageButton.isSelected());
}
});
如果您想要这样,它将切换其状态,选中时将为绿色,未选中将为蓝色。