获取视图的背景可绘制对象

7

getBackground()方法返回BitmapDrawable

Log.d(null,"drawable: " + v.getBackground());

如何将drawable转换为R.drawable.xxx?

1
你想知道你的背景资源的ID吗? - Daniel Uribe
我想获得我在视图中分配的可绘制对象。通过使用以下命令向视图创建背景:setBackgroundDrawable(R.drawable.pic) - 我想获取R.drawable.pic的值...这可能吗? - user1623176
请提供原始文本以进行翻译。 - Daniel Uribe
3个回答

3
view.getBackgroundDrawable();

使用此方法获取背景可绘制项。这将返回可绘制项。

编辑

Jelly Bean以下版本中,此方法可以正常工作,但当本答案编写时,该方法在最新版本中已被弃用。

新编辑

对于Jelly Bean之后的版本,请尝试:

 view.getBackground()

如果有人想要比较可绘制对象,请参考这个答案

杂味豆的解决方案是什么? - msangel
试试 @msangel view.getBackground()。如果可以的话,告诉我一声,我会更新我的答案。https://dev59.com/84bca4cB1Zd3GeqPW4WD#27730795 - edwin
它确实可以工作,但该实例有点“新”。与现有的相同调色板相比,会出现错误。 - msangel
你是在尝试比较drawable吗?如果是,请参考我在评论中提供的链接和评论。它解释了为什么是false。 - edwin

2

View类没有提供该方法,您可以使用:

myView.setBackgroundResource(int resId); 接收要设置的可绘制资源ID

但是该方法没有getter,只有:

myView.getBackgroundDrawable(); 返回在视图中设置的可绘制对象。

您可以扩展View以创建自己的视图,并覆盖setBackgroundResource方法,在辅助变量中保存ID,然后调用super方法。定义一个getter来返回辅助变量,就可以得到想要的功能。


我有两个按钮,它们具有相同的背景可绘制对象。但是当我获取它们的背景可绘制对象时,它们是不同的。除了是按钮之外,哪个属性会使它们相同? - user1623176
两个可绘制对象,我相信它们不会在equals上返回true,但您可以检查它们的权重,或者像我说的那样制作自己的按钮来检查ID。 - noni
你的意思是检查它的权重吗? - user1623176

-2

任何时候当你设置背景时,在一个Drawable成员类中设置R.drawable.pic。

v.setBackgroundDrawable(R.drawable.pic);
int myDrawable = R.drawable.pic;

1
R.drawable.pic 是一个整数值,而不是 Drawable - Vladimir Mironov
你测试过getDrawable()函数了吗? - Daniel Uribe
1
方法setBackgroundDrawable(Drawable)在类型View中不适用于参数(int)。同时,intValue()是什么? - user1623176

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接