当视图是多行时,约束布局如何摆脱 textview 上的额外空间

Posted

技术标签:

【中文标题】当视图是多行时,约束布局如何摆脱 textview 上的额外空间【英文标题】:Constraint Layout how do I get rid off the extra space on textview when the view is multiline 【发布时间】:2021-11-25 22:45:18 【问题描述】:

我想在 textview 之前放置两个 Imageview。当 textview 是单行时,我会得到所需的输出,见下文

如果文本视图是多行的,则会添加额外的空间,我不知道如何修复它。这是图片和代码

<androidx.constraintlayout.widget.ConstraintLayout
        android:layout_
        android:layout_
        android:background="@color/white">

    <androidx.appcompat.widget.LinearLayoutCompat
            android:id="@+id/title_holder"
            android:layout_
            android:layout_
            android:layout_marginStart="@dimen/dp16"
            android:layout_marginTop="@dimen/dp18"
            android:layout_marginEnd="@dimen/dp16"
            android:orientation="horizontal"
            app:layout_constrainedWidth="true"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent">

        <ImageView
                android:id="@+id/som_icon"
                android:layout_
                android:layout_
                android:layout_gravity="center"
                android:layout_marginEnd="@dimen/dp8"
                android:src="@drawable/ic_info_icon"
                app:layout_constraintBottom_toBottomOf="@id/name_details"
                app:layout_constraintEnd_toStartOf="@id/name_details" />
        <ImageView
                android:id="@+id/hand_icon"
                android:layout_
                android:layout_
                android:layout_gravity="center"
                android:layout_marginEnd="@dimen/dp8"
                android:src="@drawable/ic_hand"
                app:layout_constraintBottom_toBottomOf="@id/name_details"
                app:layout_constraintEnd_toStartOf="@id/name_details" />

        <TextView
                android:id="@+id/name_details"
                style="@style/sharp_sans_semi_bold_20"
                android:layout_
                android:layout_
                android:textAlignment="center"
                tools:text="Mynameis RachelKaren " />
    </androidx.appcompat.widget.LinearLayoutCompat>
</androidx.constraintlayout.widget.ConstraintLayout>

【问题讨论】:

当我将您的代码复制并粘贴到一个空项目中时,它会显示所需的行为(除了我将 @dimen/dpX 替换为 Xdp 并删除了文本视图的样式标签,因为我没有t 有这些值)。 【参考方案1】:

我可以找到一个答案,它可以完全删除 TextView 中的所有填充,但最终在通过 official doc 之后,我找到了单行文本的解决方法。

java File 这将是:

setIncludeFontPadding(false)

XML 这将是:

android:includeFontPadding="false"
android:lineSpacingExtra="0dp"

【讨论】:

以上是关于当视图是多行时,约束布局如何摆脱 textview 上的额外空间的主要内容,如果未能解决你的问题,请参考以下文章

约束布局 TextView 重叠

iOS如何摆脱额外的视图填充?

两个堆栈视图中的多行视图的自动布局问题

当 TextView 是匹配约束时,如何对齐 TextView 中的文本?

2 TextViews 在约束布局中相互重叠

创建和显示布局时如何将焦点设置在视图上?