如何在TextView中调整多种类型的行高?

emm*_*mby 25 android textview

我有一个TextView,它包含一个Spannable字符串.该字符串包含一堆文本,其中第一个单词的类型大小是字符串其余部分的两倍.

问题在于,由于第一个字的大小增加,第一和第二行之间的行间距远大于后续行之间的行间距.

http://img.skitch.com/20100615-fwd2aehbsgaby8s2s9psx3wwii.png

spannable字符串是使用以下代码段创建的:

    // Price
    CharSequence text = "$30 Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."
    final Pattern priceRegex = Pattern.compile("^(.[0-9]+)\\s.*");
    final Matcher m = priceRegex.matcher(text!=null ? text : "");
    if( m.matches() ) {
        text = new SpannableString(text);
        ((SpannableString)text).setSpan(new RelativeSizeSpan(2), 0, m.end(1), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    }
Run Code Online (Sandbox Code Playgroud)

如何修复TextView以使所有行具有相同的间距?

小智 43

您可以尝试使用以下TextView属性之一:

android:lineSpacingMultiplier
android:lineSpacingExtra
Run Code Online (Sandbox Code Playgroud)

至少尝试使所有线条具有相同的高度(与第一个相同).

  • 请注意,`android:lineSpacingMultiplier`仅在API级别16及更高版本中可用. (4认同)
  • 我有完全相同的问题,这个解决方案不起作用.就像@emmby说的那样,它确实按比例缩放**所有**线的间距. (2认同)

Luk*_*kap 0

我认为你不能:(。Android操作系统根据字体大小计算行之间的间隙,因此'30$'使第1行和第2行之间的间隙更大,我不知道是否可以控制这个间隙的大小。

为了解决这个问题,您可以轻松扩展 LinearLayuot 并将方向设置为垂直。比把 2 个带有 fillparent 的文本视图作为宽度......

然后实现函数,比方说 setNoGapText(String s); ,在这个函数中,您可以测量可以适合顶部文本视图的文本(这可以使用textutils完成),并且其余文本将适合文本视图2...

在此文本视图之间,您可以使用填充和边距属性,以便行之间的间隙看起来就像您想象的那样。