单击时 ImageView 中的图像更改

image change in ImageView when its clicked

我创建了一个 ButtonBarLayout,里面有 5 个 ImageView,我想在单击和聚焦时更改图像,就像 Instagram 一样。

P.S 我什至用了 selector.xml 如下,但它不起作用

selector.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_activated="true">
        <bitmap android:src="@drawable/ic_active"/>
    </item>

    <item>
        <bitmap android:src="@drawable/ic_normal"/>
    </item>
</selector>

我想要一些东西like this, but not like this。

我的结论是这样的,这看起来很简单但是如果5呢?有没有其他简单的方法可以只用一点代码创建这样的东西。

public void onClick(View v){
    switch (v.getId()){
        case R.id.imga:
            ivA.setImageResource(R.drawable.ic_a_white);
            ivB.setImageResource(R.drawable.ic_b_black);
            ivC.setImageResource(R.drawable.ic_c_black);
            break;
        case R.id.imgb:
            ivB.setImageResource(R.drawable.ic_b.white);
            ivA.setImageResource(R.drawable.ic_a_black);
            ivC.setImageResource(R.drawable.ic_c_black);
            break;
        case R.id.imgc:
            ivC.setImageResource(R.drawable.ic_c_whtie);
            ivA.setImageResource(R.drawable.ic_a_black);
            ivB.setImageResource(R.drawable.ic_b_black);
    }
}

您正在位图中设置可绘制对象,我不知道它们是否适用,但我这样做是因为,

<?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/ic_pressed"/>
    <item android:state_pressed="false"
        android:drawable="@drawable/ic_not_pressed"/>
    <item android:drawable="@drawable/ic_default"/>
</selector>

同时将此选择器应用到 ImageViewbackground 属性 否则边界处会留下一些 space。

试试这个

btn_selector.xml

<item android:drawable="@drawable/selector_image" android:state_selected="true"></item>
<item android:drawable="@drawable/selector_image" android:state_pressed="true"></item>
<item android:drawable="@drawable/normalImage"></item>

</selector>

现在到你的按钮

android:background="@drawable/btn_selector"

我不明白为什么这对您不起作用,但这是另一种方法。假设您有 3 个图像按钮,img1、img2、img3。现在 onClick 的 imagebutton 做这个

img1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                img1.setImageResource(R.drawable.ic_a_white); 
                img2.setImageResource(R.drawable.normal);
                img3.setImageResource(R.drawable.normal);
             }
        });

然后在第二个按钮上

img2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                img2.setImageResource(R.drawable.ic_a_white); 
                img1.setImageResource(R.drawable.normal);
                img3.setImageResource(R.drawable.normal);
            }
        });

试试这个代码

<?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/ic_active" />
   <item android:state_focused="true" 
        android:drawable="@drawable/ic_focus" />
   <item android:state_pressed="false"
        android:drawable="@drawable/ic_focus" />
</selector>