我有一个视图用作ListView
中的项目。在我的自定义适配器中,我使用View.setBackgroundResource()
更改了视图的背景,具体取决于项目在列表中的位置。 (我为列表中的第一个和最后一个项目分开了资源)。setBackgroundResource()丢弃我的XML布局属性
这样设置了正确的背景图像,但它具有令人讨厌的副作用,即我在XML定义中设置的所有填充该观点完全被忽略。
(如果我设置在XML的背景绘制,不要试图在运行时适配器来改变它,填充一切工作正常。)
我如何可以改变背景图像,并保留填充?这是一个错误?
编辑似乎别人已经发现了同样的问题在这里:Does changing the background also change the padding of a LinearLayout?
那它治愈, 谢谢。在我的情况下,可绘制的是九片PNG。 – 2011-05-04 22:23:33
有趣的,那么也许它比我想象的更广泛。 – dmon 2011-05-04 22:35:43
啊,的确如此。查看setBackgroundDrawable()中的视图代码(http://j.mp/kxQJIJ)。这显然是使用可绘制的填充覆盖填充。但是看一下Drawable资源文档,除了形状之外,没有任何东西支持填充,所以这可能是它悲惨失败的原因。 – dmon 2011-05-04 22:42:35