使用WRAP_CONTENT时,TextView ShadowLayer被剪切

时间:2019-01-02 21:14:47

标签: android textview ondraw

已经有一段时间了,我已经阅读了很多文章以尝试解决我的问题,但是我似乎无法弄清楚。 我缺少了一些东西,希望有人能帮助我了解我在做什么错。

在此示例中,我在线性布局内有一个TextView,其LayoutParams设置为MATCH_PARENT。 如果我将WRAP_CONTENT与TextView一起使用,则即使我使用了Padding,也会修剪阴影。 如果我将TextView设置为MATCH_PARENT,则不会修剪阴影。

TextView WRAP_CONTENT无填充: TextView WRAP_CONTENT No Padding

带有填充的TextView WRAP_CONTENT Textview WRAP_CONTENT with Padding

TextView MATCH_PARENT: TextView MATCH_PARENT

我什至尝试过 ll.setClipToPadding(false); ll.setClipChildren(false);

我想念什么?

2 个答案:

答案 0 :(得分:1)

不幸的是,我认为您没有丢失任何东西。这似乎是TextView如何测量斜体文本的错误。即使没有阴影,这也是一个问题。

enter image description here

您必须继承TextView(或AppCompatTextView)并定义自定义测量行为才能解决此问题。

如果您不想打扰,则共识“最佳”答案是在文本末尾添加一个不间断的空格,以增加文本的尺寸。不幸的是,这通常会增加您真正想要的空间。

enter image description here

偶然地,android:clipToPadding只是ViewGroup上的一个属性,这就是为什么将它应用于TextView时它什么都不做的原因(就像其他任何东西一样,它被忽略了)属性未知)。

答案 1 :(得分:0)

这可能是非常糟糕的做法,但是我遵循以下原则:

tv.setHeight(tv.getHeight() + tv.getPaddingTop() + tv.getPaddingBottom());
tv.setWidth(tv.getWidth() + tv.getPaddingLeft() + tv.getPaddingRight());
tv.setPadding(0, 0, 0, 0);

结果: Result

再次感谢Ben帮助我!