我在其中创建了一个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>
我的结论是这样的,这看起来很简单,但如果是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);
}
}
答案 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>