2012-10-22 30 views
2

我有一个ImageView可以有两个图像(说图像1 &图像2,存储在绘图中)。如果ImageView包含image1我希望单击该ImageView以禁用,并且如果显示图像2,则点击图像应该更改为image1 &在ImageView上禁用点击。
我无法找到方法来知道ImageView上当前正在显示哪个图像。如何知道在ImageView上设置了哪个图像?

这是我的代码

ImageView select = (ImageView) view.findViewById(R.id.select); 
select.setOnClickListener(new OnClickListener() { 
public void onClick(View v) { 
// TODO Auto-generated method stub 
} 
}); 
+0

你能分享到目前为止你做了什么吗? – 13hsoj

+0

ImageView select =(ImageView)view.findViewById(R.id.select); 选择。setOnClickListener(新OnClickListener(){ \t \t \t \t \t \t公共无效的onClick(视图v){ \t \t \t \t // TODO自动生成方法存根 \t \t \t \t \t \t \t} \t \t} ); – vaibvorld

+0

在监听器中如何知道当前在imageview中显示哪个图像(给定id为select)。 – vaibvorld

回答

2

我认为最干净的方法是跟踪这种状态的单独从UI,并有UI反映你感兴趣的问题。即国家,如果它是启用/禁用表示,请使用适当的setter方法跟踪是否在布尔值中启用此方法,并让该方法更新UI。这也可能是一个很好的应用StateListDrawable

+0

可能是一个例子会更有帮助 –

0

也许你可以考虑创建自己的视图,扩展CompoundButton。 检查的状态将是一个图像和未检查状态另一个。

1

这是按钮:

final Button whichLane = (Button) reportDialog.findViewById(R.id.which_side_icon); 
     // if button is clicked, close the custom dialog 
     whichLane.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       if (whichLane.getBackground().getConstantState().equals(getResources().getDrawable(R.drawable.other_side).getConstantState())) { 
        Toast.makeText(HomeActivity.this, "text", 10).show(); 
       } 
      } 
     }); 
0

集ID来imageviews这样select.setId(imageArray [1])for ref see this link ,做你该要什么的onclick行动。

public static int[] imageArray = { 
     R.drawable.image1, 
     R.drawable.image2 

     }; 
Bitmap bmp= BitmapFactory.decodeResource(getResources(),imageArray[i]); 
    select.setImageBitmap(bmp); 
    select.setId(imageArray[i]); 
    select.setOnClickListener(new OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     if(v.getId()==R.drawable.image1){ 
        //here you set image2 to select 
      } 
     else{ 
        //here you set image1 to select 
     } 
    } }); 
+0

我知道这是太长的回复,但它可能有助于某人。 – Lingeshwaran

0

您可以使用Integer并在更改图像时更改其值。
例如使用

public Integer num; 

如果对这些视图中设置图像1,变化NUM的值设为1。 并在onClickListener方法检查NUM是否为1或没有。 即

if (num == 1) 

改变图像2否则改变图像1

0

你可以在imageview的使用tag并相应检查图像。然后,当您更改图像时,请再次将tag设置为图像视图。一个例子: -

在这里,我展示了8个图像的例子。我首先从布局文件中设置名为p1的图像,并将图像视图标记设置为1。然后当用户点击图像时,我检查imageview标签名称。并相应地更改图像。

imageView.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      String tagId = imageView.getTag().toString(); 
      switch (tagId) { 
       case "1": 
        imageView.setImageDrawable(getResources().getDrawable(R.drawable.p2)); 
        imageView.setTag("2"); 
        break; 
       case "2": 
        imageView.setImageDrawable(getResources().getDrawable(R.drawable.p3)); 
        imageView.setTag("3"); 
        break; 
       case "3": 
        imageView.setImageDrawable(getResources().getDrawable(R.drawable.p4)); 
        imageView.setTag("4"); 
        break; 
       case "4": 
        imageView.setImageDrawable(getResources().getDrawable(R.drawable.p5)); 
        imageView.setTag("5"); 
        break; 
       case "5": 
        imageView.setImageDrawable(getResources().getDrawable(R.drawable.p6)); 
        imageView.setTag("6"); 
        break; 
       case "6": 
        imageView.setImageDrawable(getResources().getDrawable(R.drawable.p7)); 
        imageView.setTag("7"); 
        break; 
       case "7": 
        imageView.setImageDrawable(getResources().getDrawable(R.drawable.p8)); 
        imageView.setTag("8"); 
        break; 

      } 

     } 
    }); 
相关问题