我需要在drawble文件夹中查找imagevIEw(onvIEw of imagevIEw)中设置的图像.为此,我需要从drawable文件夹中比较drawvIEw的imagevIEw的背景和图像.我找到了一些方法,但在我的情况下,这些都不起作用.
在调试这个问题时,我发现一个名为“mBackgroundResource”的imagevIEw(在imagevIEw上悬停)的一个属性在drawable文件夹中保存了我的图像的相同Integer值.
int i = R.drawable.skype; (2130837526)
ImagevIEw的mBackgroundResource = 2130837526
那么有没有办法获得mBackgroundResource值?所以我可以尝试比较它.谁能帮忙解决这个问题?
这是我的代码.
我在适配器中,所以,
Context mContext;Drawable skype;skype = mContext.getResources().getDrawable(R.drawable.skype); // in the constructor of the adapter.public voID onClick(VIEw v) { ImageVIEw img = (ImageVIEw)v.findVIEwByID(R.ID.img_call_icon); Drawable img_ID = img.getBackground(); }
现在我试过了……(我错过了哪里?)
/***********************************************************************************/ if(img_ID == skype) { // Not working... }/***********************************************************************************/Bitmap bitmap = ((BitmapDrawable)img_ID).getBitmap();Bitmap bitmap1 = ((BitmapDrawable)skype).getBitmap();if(bitmap == bitmap1){ // Not working...}/***********************************************************************************/Object tag = img.getTag();int i = R.drawable.skype;if(tag != null && ((Integer)tag).intValue() == i){ // Not working...}/***********************************************************************************/int j = ((Integer)tag).intValue() ; // always return 0..int i = R.drawable.skype;if(i == j){ // Not working...}/***********************************************************************************/Boolean b = img_ID.equals(skype); // return FALSE, Not working.../***********************************************************************************/ImageVIEw imageVIEw = (ImageVIEw)v.findVIEwByID(R.ID.img_call_icon);assert(i == imageVIEw.getID());Integer integer = (Integer) imageVIEw.getTag(); // always fill with null...integer = integer == null ? 0 : integer; switch(integer) { case R.drawable.skype: Toast.makeText(mContext, "skype", Toast.LENGTH_SHORT).show(); break; case R.drawable.call: Toast.makeText(mContext, "call", Toast.LENGTH_SHORT).show(); break; } // Not working...
解决方法:
您是否在适配器中设置了ImageVIEw的drawable?
如果是这样,您可以将可绘制ID保存在VIEw的标记中,如下所示:
ImageVIEw imageVIEw = (ImageVIEw) v.findVIEwByID(R.ID.img_call_icon);imageVIEw.setTag(R.drawable.a_drawable);imageVIEw.setDrawableResource(R.drawable.a_drawable);
并检查ImageVIEw中哪个drawable:
ImageVIEw imageVIEw = (ImageVIEw) v.findVIEwByID(R.ID.img_call_icon);Object tag = imageVIEw.getTag();int ID = tag == null ? -1 : (int) tag;switch(ID){case R.drawable.skype: Toast.makeText(mContext, "skype", Toast.LENGTH_SHORT).show(); break;case R.drawable.call: Toast.makeText(mContext, "call", Toast.LENGTH_SHORT).show(); break;}
总结 以上是内存溢出为你收集整理的android – 如何从drawable中找到imageview中设置的图像?全部内容,希望文章能够帮你解决android – 如何从drawable中找到imageview中设置的图像?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)