删除 TextView 中的顶部和底部间距
Posted
技术标签:
【中文标题】删除 TextView 中的顶部和底部间距【英文标题】:Remove top and bottom spacing in TextView 【发布时间】:2020-12-05 10:38:06 【问题描述】:如何删除文本顶部和底部的间距?我想让两个文本相互接触,或者至少减少文本之间的间距。
我看过其他推荐设置 android:includeFontPadding="false"
的帖子,但这不起作用。
<TextView
android:id="@+id/textView"
android:layout_
android:layout_
android:textSize="96sp"
android:text="TEXT1"
android:background="@color/primaryColor"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/textView2"
android:layout_
android:layout_
android:textSize="96sp"
android:text="TEXT2"
android:background="@color/secondaryColor"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/textView" />
【问题讨论】:
使用android:includeFontPadding="false"
确实会稍微减少间距,尽管不是完全。显示某些字符时实际上需要剩余空间(尝试çÉ
,它到达顶部和底部)如果您仍然想摆脱那个空间,您可以通过自定义间距来实现,例如在第二个文本。如果您想保留背景,则需要制作自定义视图。
【参考方案1】:
问题在于这不仅仅是空白 - 它是字体的上升和下降,像 g 的下部这样的地方。 TextView
必须有那个空间,因为它不知道你不会使用它。 includeFontPadding
影响上升顶部的一些重音,因此您可以删除一点空间,但其余部分是必需的。
没有得到没有上升和下降的字体,老实说,我认为你能做的最好的事情是将下部TextView
的顶部限制到上部的顶部,并添加一个marginTop
值,可将其向下移动到您想要的位置。使用 sp 值而不是 dp 以便它保持相对于用户的字体大小偏好 - 如果您更改字体,则需要对其进行调整。并且背景必须是分开的,在文本视图后面,如果你使用那些
【讨论】:
【参考方案2】:如果您不惜一切代价绝对想要这个,那么您可以执行以下操作,我尚未检查它是否适用于不同的屏幕尺寸。但是您可以将它们的顶部都附加到同一个视图,可以是父视图,然后使背景透明,如果您选择不同的颜色,那么这将不起作用,保持文本全部大写,这样常规字母就不能再高了或更低。根据您将在 dp 中给出的文本大小保持边距。这可能是“我无论如何都想要”的方法,而不是可接受的方法。
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_
android:layout_
xmlns:app="http://schemas.android.com/apk/res-auto">
<TextView
android:id="@+id/textView"
android:layout_
android:layout_
android:textSize="95dp"
android:text="TEXT1"
android:background="@android:color/transparent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
android:layout_marginTop="0dp"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/textView2"
android:layout_
android:layout_
android:background="@android:color/transparent"
android:text="TEXT2"
android:textSize="95dp"
android:layout_marginTop="75dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
【讨论】:
【参考方案3】:您可以使用Space
视图做一些聪明的事情来完成这项工作:
<TextView android:id="@+id/textView1"
[other TextView stuff]
app:layout_constraintTop_toTopOf="parent"/>
<Space android:id="@+id/space"
android:layout_marginBottom="20dp"
app:layout_constraintBottom_toBottomOf="@id/textView1"/>
<TextView android:id="@+id/textView2"
[other TextView stuff]
app:layout_constraintTop_toBottomOf="@id/space"/>
然后在Space
视图中调整margin 参数,直到文本出现在您想要的位置。
【讨论】:
在使用ConstraintLayout
时,绝对没有正当理由使用Space
。
然后请演示如何操作。请注意,不支持负边距。以上是关于删除 TextView 中的顶部和底部间距的主要内容,如果未能解决你的问题,请参考以下文章