获取ImageView的一个绘制的ID [英] Get the ID of a drawable in ImageView

查看:186
本文介绍了获取ImageView的一个绘制的ID的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个的ImageView ,并在其上​​设置一个绘制。现在,我需要得到绘制的ID对<​​code>的ImageView 动态点击事件。我怎样才能得到它?

I have one ImageView and set a drawable on it. Now I need to get the ID of the drawable on click event of ImageView dynamically. How can I get it?

推荐答案

我想,如果我理解正确的话,这是你在做什么。

I think if I understand correctly this is what you are doing.

ImageView view = (ImageView) findViewById(R.id.someImage);
view.setOnClickListener(new OnClickListener() {
  public void onClick(View view) {
   ImageView imageView = (ImageView) view;
   assert(R.id.someImage == imageView.getId());
   switch(getDrawableId(imageView)) {
    case R.drawable.foo:
     imageView.setDrawableResource(R.drawable.bar);
     break;
    case R.drawable.bar:
    default:
     imageView.setDrawableResource(R.drawable.foo);

     break;
  }
});

对吗?使功能getDrawableId()不存在。你不能得到一个绘制从因为ID只是一个参考的数据如何构建一个可绘制在设备上的位置实例化的ID。一旦绘制构造它没有办法取回被用来创建它的RESOURCEID。但是,你可以把它的工作是这样的:

Right? So that function getDrawableId() doesn't exist. You can't get a the id that a drawable was instantiated from because the id is just a reference to the location of data on the device on how to construct a drawable. Once the drawable is constructed it doesn't have a way to get back the resourceId that was used to create it. But you could make it work something like this:

ImageView view = (ImageView) findViewById(R.id.someImage);
view.setOnClickListener(new OnClickListener() {
  public void onClick(View view) {
   ImageView imageView = (ImageView) view;
   assert(R.id.someImage == imageView.getId());
   Integer integer = (Integer) imageView.getTag();
   integer = integer == null ? 0 : integer;
   switch(integer) {
    case R.drawable.foo:
     imageView.setDrawableResource(R.drawable.bar);
     imageView.setTag(R.drawable.bar);
     break;
    case R.drawable.bar:
    default:
     imageView.setDrawableResource(R.drawable.foo);
     imageView.setTag(R.drawable.foo);
     break;
  }
});

这篇关于获取ImageView的一个绘制的ID的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆