获取ImageView的一个绘制的ID [英] Get the ID of a drawable in ImageView
问题描述
我有一个的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屋!