Android TextView的下标被剪掉了

Taw*_*ani 23 android textview subscript

即使我android:layout_height="wrap_content"用于TextView ,Android TextView也会剪切我的文本下标(见下图).有没有修复/解决这个问题?

替代文字http://i38.tinypic.com/qy8n7m.png

P/S:上传文章工作正常

注意:填充不起作用.

  • 我甚至尝试添加50dip的填充但它没有帮助.
  • 我可以使用绝对高度,例如50dip但是当我需要文本环绕时,这会让一切都变得混乱.

示例代码:

mtTextView.setText(Html.fromHtml("HC0<sub>3</sub>"));

Nic*_*lov 21

大多数答案建议添加填充或使用较小的子/上标.这些可能是可用的解决方法,但它们并没有真正解决问题.理想情况下,我们希望Android在计算行高时考虑子/上标.我想我已经找到了如何做到这一点,而且我正在为谷歌搜索这个问题分享它.

    SpannableStringBuilder sb = new SpannableStringBuilder("X2");
    sb.setSpan(new SuperscriptSpan(), 1, 2, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    textView.setText(sb, BufferType.SPANNABLE);
Run Code Online (Sandbox Code Playgroud)

诀窍在于BufferType.SPANNABLE.显然它使TextView更加注意标记并正确计算线高.


Tri*_*ith 19

这个解决方案对我有用.

当浏览器呈现时,上标文本通常会变小,这似乎不会发生在这里,所以你可以通过这样做来复制(并解决这个问题):

someTextView.setText(Html.fromHtml("Some text<sup><small>1</small></sup>"));
Run Code Online (Sandbox Code Playgroud)


Dan*_*Dan 10

对于下标,需要略微改变上述建议,两个小标签:

    textView.setText(Html.fromHtml(
        "HCO<sub><small><small>3</small></small></sub>));
Run Code Online (Sandbox Code Playgroud)


小智 10

android:lineSpacingExtra ="4dp"应该解决它,这将在你的文本下方添加额外的行间距,并保持下标不被截止.我没有尝试过上标,所以它现在可以修复它.


Pri*_*hal 7

我有同样的问题,所以在阅读帖子后,我发现这是有效的.

示例:H 2 O
只需使用:

textView.setText(Html.fromHtml("H<sub>2</sub>O"),BufferType.SPANNABLE);
Run Code Online (Sandbox Code Playgroud)

BufferType.SPANNABLE非常重要,因为它会告诉textview考虑上标范围.

如果您使用HTML的自定义标记处理程序,您也可以像这样使用它:

 textView.setText(Html.fromHtml(data, null, new CustomHtmlTagHandler(),BufferType.SPANNABLE);
Run Code Online (Sandbox Code Playgroud)

希望它可以帮助某人寻找同样的问题.