2

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

3 回答 3

1
water.setOnClickListener(new OnClickListener()   {
       public void onClick(View v)     {
           Log.v("flag", "0");
           ((LinearLayout)v.getParent()).dispatchSetSelected(false);
           v.setSelected(true);
       }
});
于 2017-11-13T22:16:57.460 回答
0

您可以使用 Radiogroup 而不必担心选中状态。或者在选择图像时取消选择图像。

使用 radiogroup 是最好的方法:
1. 你不要重复代码。
2.任何时候都可以得到选中的物品。

于 2013-09-15T20:26:18.463 回答
-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);
    }

};
于 2013-09-15T20:43:10.573 回答