gpt4 book ai didi

android - 获取 ImageView 中可绘制对象的 ID

转载 作者:IT王子 更新时间:2023-10-28 23:45:45 29 4
gpt4 key购买 nike

我有一个 ImageView 并在其上设置了一个可绘制对象。现在我需要动态获取 ImageView 的点击事件的可绘制 ID。我怎样才能得到它?

imgtopcolor = (ImageView) findViewById(R.id.topcolor); 
imgtopcolor.setImageResource(R.drawable.dr); // How do I get this back?

现在在 imgtopcolor 的触摸事件中,我需要可绘制的 id,因为我每次都设置不同的可绘制对象并希望将可绘制对象与其他对象进行比较

最佳答案

我想如果我理解正确的话,这就是你正在做的事情。

ImageView view = (ImageView) findViewById(R.id.someImage);
view.setOnClickListener(new OnClickListener() {
@Override
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 只是对设备上有关如何构造可绘制对象的数据位置的引用。一旦构建了drawable,它就没有办法取回用于创建它的resourceId。但是你可以使用 tags

让它像这样工作
ImageView view = (ImageView) findViewById(R.id.someImage);
view.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
ImageView imageView = (ImageView) view;
assert(R.id.someImage == imageView.getId());

// See here
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;
}
});

关于android - 获取 ImageView 中可绘制对象的 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4526585/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com