背景色调

时间:2016-03-29 15:10:16

标签: android imageview

如何为ImageButtonAppCompatImageButton使用背景色调?请回答XML和Java。 我找到了一个java解决方案,说我最常使用setBackgroundTintList(),但是当我使用它时,背景总是显示蓝色而不会在点击时改变。 这就是我的尝试:

mButtonBold.setSupportBackgroundTintList(new ColorStateList(
            new int[][]{EMPTY_STATE_SET, PRESSED_ENABLED_STATE_SET},
            new int[]{Color.BLUE, Color.GREEN}
))

4 个答案:

答案 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());
            }
        });

如果您想要这样,它将切换其状态,选中时将为绿色,未选中将为蓝色。