单击时 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>
同时将此选择器应用到 ImageView
的 background
属性 否则边界处会留下一些 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>
我创建了一个 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>
同时将此选择器应用到 ImageView
的 background
属性 否则边界处会留下一些 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>