选择另一个时,取消选择Android视图

时间:2013-09-15 19:52:14

标签: android android-imageview

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

3 个答案:

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

};