TextView 忽略左右边距

Posted

技术标签:

【中文标题】TextView 忽略左右边距【英文标题】:TextView ignores left and right margins 【发布时间】:2020-09-22 16:45:48 【问题描述】:

我的布局包括:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_
    android:layout_
    tools:context=".MainActivity">

    <Button
        android:id="@+id/btnFindPOIs"
        android:layout_
        android:layout_
        android:layout_marginTop="16dp"
        android:layout_marginEnd="16dp"
        android:text="Find POIs"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/btnGetLocation" />

    <TextView
        android:id="@+id/txtPoiDetails"
        android:layout_
        android:layout_
        android:layout_marginStart="16dp"
        android:layout_marginTop="16dp"
        android:layout_marginEnd="16dp"
        android:textSize="18sp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/btnFindPOIs" />

</androidx.constraintlayout.widget.ConstraintLayout>

当 TextView 的内容超出一行时,它会正确地流到第二行,但文本会向右延伸到屏幕边缘,忽略 16dp 左右边距。

【问题讨论】:

【参考方案1】:

Layout Margin 影响 View 对象,在本例中为 TextView。不是对象内的实际文本。所以它仍然会紧贴物体的边缘。 我建议使用填充,它会直接影响文本。您可能还想考虑为对象添加重力?

我还建议在这些视图上使用布局权重,否则您将遇到调整大小的问题!

android:paddingStart="16dp"

干杯!

【讨论】:

谢谢。填充有效,但我不明白为什么。据我了解,marginStart 规定了 TextView 与其父级(屏幕)之间允许的空间,而 padding 规定了 TextView 内部边缘和内容之间允许的空间。那么,为什么在我的原始布局(隐式零填充)中,文本不会停在距屏幕边缘 16dp 的 TextView 的边缘? 啊,这很可能是由您的宽度属性引起的。您已将其设置为 wrap_content。这通常会忽略约束和边距。而是尝试将其设置为 match_constraint aka 0dp。通常最好在宽度上使用 match_constraint 或 match_parent。您始终可以通过使用 Space 并在水平线性布局内嵌套两个空格 + 一个文本视图来强制空间,然后使用布局权重。嵌套权重被认为是不好的做法,但您可以这样做。

以上是关于TextView 忽略左右边距的主要内容,如果未能解决你的问题,请参考以下文章

如何在android中根据上面的imageview对齐textview

textView:shouldChangeTextInRange:replacementText: 返回 NO,但自动更正忽略?

消除UITextView上下左右边距

Android TextView 文字周边的空白部分是多少

android 使用代码进行relativelayout布局时,当其中的一个TextView显示在另一个TextView左右时,如何实现

如何删除 TextView 上边距?