我们正在测试我们的新应用程序,我们为多个文本视图使用复合可绘制对象。不幸的是,索尼 Xperia S (LT26i) 忽略了 setCompoundDrawables 和 setCompoundDrawablesWithIntrinsicBounds。
任何人都可以确认这个错误吗?或者有人有解决方法吗?这种效果会影响其他手机吗?
谢谢和问候
我们正在测试我们的新应用程序,我们为多个文本视图使用复合可绘制对象。不幸的是,索尼 Xperia S (LT26i) 忽略了 setCompoundDrawables 和 setCompoundDrawablesWithIntrinsicBounds。
任何人都可以确认这个错误吗?或者有人有解决方法吗?这种效果会影响其他手机吗?
谢谢和问候
我也在 Xperia S (LT26i) 上发现了同样的行为。我在几种不同的设备上尝试过,包括其他 4.1.2 设备,它是唯一一个出现错误的设备。我修改了梅尔夫的答案(非常感谢,我不知道为什么会这样!)
TextView title = ....
title.setCompoundDrawablePadding(0);
// Reset drawables
title.setCompoundDrawables(null, null, null, null);
title.setCompoundDrawablesWithIntrinsicBounds(0, 0, drawableId, 0);
我可以在我的 LT26i/4.1.2/build 6.2.B.1.96 上确认相同的行为。
我的解决方法是在重新分配适当的绘图之前清除所有复合绘图:
final int oldPadding = getCompoundDrawablePadding();
// In order to be able to reset the drawables, set padding to zero.
// (this step is specific to this Android issue/bug)
setCompoundDrawablePadding(0);
// Reset drawables
setCompoundDrawables(null, null, null, null);
// Set drawables and restore padding
setCompoundDrawables(myDrawables[0], myDrawables[1], myDrawables[2], myDrawables[3]);
setCompoundDrawablePadding(oldPadding);