我在LinearLayout中有4个ImageView。还有一个selector.xml文件,当android:state_selected =“true”
时,它会将背景颜色设置为红色我想要的是选择仅一个视图。我不知道如何保持对最后选择的视图的引用,所以我可以取消选择它。
我到目前为止的代码是:
ImageView beer = (ImageView)findViewById(R.id.beer_button);
ImageView coffee = (ImageView)findViewById(R.id.coffee_button);
ImageView food = (ImageView)findViewById(R.id.food_button);
ImageView wifi = (ImageView)findViewById(R.id.wifi_button);
beer.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Log.v("flag", "1");
v.setSelected(true);
}
});
coffee.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Log.v("flag", "2");
v.setSelected(true);
}
});
food.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Log.v("flag", "3");
v.setSelected(true);
}
});
wifi.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Log.v("flag", "4");
v.setSelected(true);
}
});
答案 0 :(得分:1)
water.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Log.v("flag", "0");
((LinearLayout)v.getParent()).dispatchSetSelected(false);
v.setSelected(true);
}
});
答案 1 :(得分:0)
您可以使用Radiogroup,也不用担心选择状态。或者当选择图像时取消选择。
使用radiogroup是最好的方法:
1.你不重复代码。
2.任何时候你都可以获得所选项目。
答案 2 :(得分:-1)
除了@ slientnuke的答案,你也可以这样做:
// First define imageViews as global
private ImageView beer, coffee, food, wifi;
// Find them and set their click event to one
beer = (ImageView)findViewById(R.id.beer_button);
coffee = (ImageView)findViewById(R.id.coffee_button);
food = (ImageView)findViewById(R.id.food_button);
wifi = (ImageView)findViewById(R.id.wifi_button);
beer.setOnClickListener(selectionListener);
coffee.setOnClickListener(selectionListener);
food.setOnClickListener(selectionListener);
wifi.setOnClickListener(selectionListener);
// Define selectionListener
private OnClickListener selectionListener = new OnClickListener() {
public void onClick(View v) {
beer.setSelected(false);
coffee.setSelected(false);
food.setSelected(false);
wifi.setSelected(false);
v.setSelected(true);
}
};