设置linearLayout边距

Posted

技术标签:

【中文标题】设置linearLayout边距【英文标题】:Set linearLayout margin 【发布时间】:2018-08-10 13:59:36 【问题描述】:

我需要用动态 TextView 填充 LinearLayout(ScrollView 的子级)。

问题是,在我的应用程序中,滚动开始的位置没有定义(它在使用应用程序时会动态变化),我想我已经用layout_constraintTop_toBottomOf 解决了这个问题。

主要问题是我需要 ScrollView 从底部以 90dp 结束。但是我不能用边距来做到这一点(如下面的代码),因为它会忽略它们。

我也尝试过填充,但也没有用。

这是我不起作用的解决方案:

<ScrollView
    android:id="@+id/scroll_seguiti"
    android:layout_
    android:layout_
    android:layout_marginEnd="10dp"
    android:layout_marginStart="10dp"
    android:layout_marginTop="10dp"
    android:layout_marginBottom="90dp"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toEndOf="parent"
    app:layout_constraintTop_toBottomOf="@id/scroll_view">


    <LinearLayout
        android:id="@+id/linear_view_seguiti"
        android:layout_
        android:layout_
        android:paddingBottom="90dp"
        android:orientation="vertical">
    </LinearLayout>

</ScrollView>

我真的需要那个边距,因为底部有一些按钮。 如要求,这是我的完整 xml:

<TableLayout
    android:id="@+id/tableLayout_seguiti"
    android:layout_
    android:layout_
    android:layout_marginEnd="10dp"
    android:layout_marginStart="10dp"
    android:layout_marginTop="25dp"
    android:layout_marginBottom="90dp"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toEndOf="parent"
    app:layout_constraintTop_toTopOf="parent">

    <TableRow
        android:layout_
        android:layout_
        android:layout_marginEnd="10dp">

        <TextView
            android:layout_
            android:layout_
            android:layout_marginBottom="8dp"
            android:text="Cerca utenti da seguire"
            android:textSize="20sp" />
    </TableRow>

    <TableRow
        android:layout_
        android:layout_
        android:layout_marginEnd="10dp">

        <EditText
            android:id="@+id/edit_search"
            android:layout_
            android:layout_
            android:ems="10"
            android:inputType="textPersonName"
            android:hint="Cerca..." />
    </TableRow>

</TableLayout>


<ScrollView
    android:id="@+id/scroll"
    android:layout_
    android:layout_
    android:layout_marginEnd="10dp"
    android:layout_marginStart="10dp"
    android:layout_marginTop="8dp"
    android:layout_marginBottom="90dp"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toEndOf="parent"
    app:layout_constraintTop_toBottomOf="@id/tableLayout_seguiti">


    <LinearLayout
        android:id="@+id/linear_view"
        android:layout_
        android:layout_
        android:orientation="vertical">


    </LinearLayout>

</ScrollView>


<ScrollView
    android:id="@+id/scroll_view"
    android:layout_
    android:layout_
    android:layout_marginEnd="10dp"
    android:layout_marginStart="10dp"
    android:layout_marginBottom="90dp"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toEndOf="parent"
    app:layout_constraintTop_toBottomOf="@id/scroll">

    <LinearLayout
        android:id="@+id/ln_view"
        android:layout_
        android:layout_
        android:orientation="vertical">

        <TextView
            android:layout_
            android:layout_
            android:layout_marginTop="20dp"
            android:layout_marginBottom="8dp"
            android:text="Utenti che segui"
            android:textSize="20sp" />

        <TextView
            android:layout_
            android:layout_
            android:layout_marginBottom="8dp"
            android:text="Clicca sul nome degli utenti che desideri seguire o smettere di seguire."
            android:textSize="12sp" />

    </LinearLayout>

</ScrollView>


<ScrollView
    android:id="@+id/scroll_seguiti"
    android:layout_
    android:layout_
    android:layout_marginEnd="10dp"
    android:layout_marginStart="10dp"
    android:layout_marginTop="10dp"
    android:layout_marginBottom="90dp"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toEndOf="parent"
    app:layout_constraintTop_toBottomOf="@id/scroll_view">


    <LinearLayout
        android:id="@+id/linear_view_seguiti"
        android:layout_
        android:layout_
        android:orientation="vertical">
    </LinearLayout>

</ScrollView>


<Button
    android:id="@+id/btn_mieiPost"
    android:layout_
    android:layout_
    android:layout_marginBottom="20dp"
    android:layout_marginEnd="10dp"
    android:layout_marginStart="15dp"
    android:text="I miei post"
    style="@style/Widget.AppCompat.Button.Colored"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toStartOf="@+id/btn_home"
    app:layout_constraintStart_toStartOf="parent" />

<Button
    android:id="@+id/btn_seguiti"
    android:layout_
    android:layout_
    android:layout_marginBottom="20dp"
    android:layout_marginEnd="15dp"
    android:layout_marginStart="10dp"
    android:text="Seguiti"
    style="@style/Widget.AppCompat.Button.Colored"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toEndOf="@+id/btn_home" />


<Button
    android:id="@+id/btn_home"
    android:layout_
    android:layout_
    android:layout_marginBottom="10dp"
    android:layout_marginEnd="20dp"
    android:layout_marginStart="20dp"
    android:text="Home"
    style="@style/Widget.AppCompat.Button.Colored"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toStartOf="@+id/btn_seguiti"
    app:layout_constraintStart_toEndOf="@+id/btn_mieiPost"
    app:srcCompat="@android:drawable/ic_menu_gallery" />

【问题讨论】:

【参考方案1】:

您只需要为滚动视图设置边距。从线性布局中删除边距。 为滚动视图添加 full viewport: true

【讨论】:

android:fillViewport=true; 我只为滚动设置了边距,还添加了 android:fillViewport=true 但它仍然忽略了底部边距。【参考方案2】:

制作scrollView的高度match_parent这可能有助于检查以下内容

<ScrollView
android:id="@+id/scroll_seguiti"
android:layout_
android:layout_
android:layout_marginEnd="10dp"
android:layout_marginStart="10dp"
android:layout_marginTop="10dp"
android:layout_marginBottom="90dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/scroll_view">


<LinearLayout
    android:id="@+id/linear_view_seguiti"
    android:layout_
    android:layout_
    android:paddingBottom="90dp"
    android:orientation="vertical">
</LinearLayout>

【讨论】:

如果我将其设为 match_parent,则视图从所有内容的顶部开始,而不是我希望它从“scroll_view”的底部开始,如 app:layout_constraintTop_toBottomOf="@id/scroll_view" 共享整个布局 xml

以上是关于设置linearLayout边距的主要内容,如果未能解决你的问题,请参考以下文章

LinearLayout 忽略边距

android布局:LinearLayout中的动态边距

以编程方式在 RealtiveLayout 中设置 LinearLayout 的边距 - 不起作用

试图了解 ScrollView 内 LinearLayout 的边距

将LinearLayout添加到ConstraintLayout时,TextViews消失

默认情况下,LinearLayout 内的 ImageView 在侧面有边距