【问题标题】:How do I reduce the line spacing between text in my Android layout?如何减少 Android 布局中文本之间的行距?
【发布时间】:2012-02-24 09:36:38
【问题描述】:

我想减小附加布局中文本之间的行距(User12,5 部电影,改进 2.5%)。

这是下面的 xml(我尝试删除 singleLine="true" 语句并将其设置为 false):

<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="?android:attr/listPreferredItemHeight"
  android:orientation="horizontal" >

  <ImageView
    android:id="@+id/icon"
    android:src="@drawable/icon"
    android:layout_width="36dip"
    android:layout_height="36dip"
    android:layout_margin="5dip"
    android:scaleType="center"
    android:layout_gravity="center_vertical" />

   <LinearLayout
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_weight="7.5">
    <TextView
        android:id="@+id/scoreDesc"
        android:text="User12"
        android:layout_marginLeft="5dip"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:textAppearance="@android:style/TextAppearance.Small"
        android:singleLine="true"
        android:ellipsize="marquee"
        android:layout_weight="1"
        android:layout_gravity="center_vertical" />
    <TextView
        android:id="@+id/scoreDesc"
        android:text="5 movies"
        android:layout_marginLeft="5dip"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:textAppearance="@android:style/TextAppearance.Small"
        android:singleLine="true"
        android:ellipsize="marquee"
        android:layout_weight="1"
        android:layout_gravity="center_vertical" />

    <TextView
        android:id="@+id/scoreDesc"
        android:text="2.5% improved"
        android:layout_marginLeft="5dip"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:textAppearance="@android:style/TextAppearance.Small"
        android:singleLine="true"
        android:ellipsize="marquee"
        android:layout_weight="1"
        android:layout_gravity="center_vertical" />
  </LinearLayout>
  <TextView
    android:id="@+id/scoreNum"
    android:text="32"
    android:layout_width="wrap_content"
    android:layout_height="fill_parent"
    android:gravity="center"
    android:textSize="20sp"
    android:textStyle="bold"
    android:paddingLeft="10dip"
    android:paddingRight="60dip"  
    />

</LinearLayout>

【问题讨论】:

    标签: android android-layout line textview spacing


    【解决方案1】:

    这个问题被问了很久,但是如果将来有人需要答案,只需将负值传递给

    android:lineSpacingExtra="-4dp"
    

    【讨论】:

    • 问题是指LinearLayout中各个组件之间的问题。这个只适用于 TextView。请参阅下面的回复。
    • 负值削减下一行字符如“g”将从底部削减。
    • 它有效,而且据我所见,它不会剪切“g”或“p”等字母的下部。
    【解决方案2】:

    正如 Cullan 上面所说,您必须输入负边距值:

    android:layout_marginTop="-10dp"

    <TextView
        android:id="@+id/scoreDesc"
        android:text="User12"
        android:layout_marginLeft="5dip"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:textAppearance="@android:style/TextAppearance.Small"
        android:singleLine="true"
        android:ellipsize="marquee"
        android:layout_weight="1"
        android:layout_gravity="center_vertical" />
    <TextView
        android:id="@+id/scoreDesc"
        android:text="5 movies"
        android:layout_marginLeft="5dip"
        android:layout_marginTop="-10dp"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:textAppearance="@android:style/TextAppearance.Small"
        android:singleLine="true"
        android:ellipsize="marquee"
        android:layout_weight="1"
        android:layout_gravity="center_vertical" />
    

    希望这对某人有所帮助。

    【讨论】:

    • 这是唯一对我有用的解决方案。其他都不起作用。
    【解决方案3】:

    在这种情况下设置 lineSpacingMultiplier 似乎比 lineSpacingExtra 更好,例如

    android:lineSpacingMultiplier="0.8"

    (如果您的所有文本都在一个 TextView 中,并且在 xml 中有上述行,则此方法有效。)

    【讨论】: