单击

时间:2017-06-12 08:52:34

标签: android imageview instagram

我在其中创建了一个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,但不是like this

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

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);
    }
}

3 个答案:

答案 0 :(得分:0)

你在bitmaps中设置drawable,我不知道它们是否适用但是我这样做了,

<?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>

同样将此选择器应用于background的{​​{1}}属性,否则会在边框处留下一些空格。

答案 1 :(得分:0)

试试这个

<强> 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个imageButtons,img1,img2,img3。现在onClick图像按钮执行此操作

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);
            }
        });

答案 2 :(得分:0)

试试此代码

<?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>