1

我们正在测试我们的新应用程序,我们为多个文本视图使用复合可绘制对象。不幸的是,索尼 Xperia S (LT26i) 忽略了 setCompoundDrawables 和 setCompoundDrawablesWithIntrinsicBounds。

任何人都可以确认这个错误吗?或者有人有解决方法吗?这种效果会影响其他手机吗?

谢谢和问候

4

2 回答 2

3

我也在 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);
于 2015-01-14T17:09:43.723 回答
3

我可以在我的 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);
于 2014-12-05T09:36:18.757 回答