【问题标题】:Horizontal LinearLayout space between items without padding left and right项目之间的水平线性布局空间,没有左右填充
【发布时间】:2021-10-24 05:06:00
【问题描述】:

我需要 LinearLayout 中的项目之间的空间,而不需要在两侧进行填充。

这张图片会解释它:

这是 XML:

    <LinearLayout
        android:layout_width="240dp"
        android:layout_height="match_parent"
        android:layout_marginBottom="32dp"
        android:orientation="horizontal">


        <ImageView
            android:id="@+id/rateOneStar"
            android:layout_width="32dp"
            android:layout_height="32dp"
            android:layout_weight="1"
            app:srcCompat="@drawable/ic_star"
            app:tint="@color/ratingStarInactive" />

        <ImageView
            android:id="@+id/rateTwoStar"
            android:layout_width="32dp"
            android:layout_height="32dp"
            android:layout_weight="1"
            app:srcCompat="@drawable/ic_star"
            app:tint="@color/ratingStarInactive" />

        <ImageView
            android:id="@+id/rateThreeStar"
            android:layout_width="32dp"
            android:layout_height="32dp"
            android:layout_weight="1"
            app:srcCompat="@drawable/ic_star"
            app:tint="@color/ratingStarInactive" />

        <ImageView
            android:id="@+id/rateFourStar"
            android:layout_width="32dp"
            android:layout_height="32dp"
            android:layout_weight="1"
            app:srcCompat="@drawable/ic_star"
            app:tint="@color/ratingStarInactive" />

        <ImageView
            android:id="@+id/rateFiveStar"
            android:layout_width="32dp"
            android:layout_height="32dp"
            android:layout_weight="1"
            app:srcCompat="@drawable/ic_star"
            app:tint="@color/ratingStarInactive" />
    </LinearLayout>

【问题讨论】:

标签: android android-linearlayout android-xml


【解决方案1】:

编辑:更好的解决方案

在边缘视图上设置 layoutWeight 会移除它们周围的填充。

<LinearLayout
        android:id="@+id/requested"
        android:layout_width="240dp"
        android:layout_height="match_parent"
        android:layout_marginBottom="32dp"
        android:orientation="horizontal"
        app:layout_constraintTop_toBottomOf="@id/original">


        <ImageView
            android:id="@+id/rateOneStar"
            android:layout_width="32dp"
            android:layout_height="32dp"
            android:layout_weight="0"
            app:srcCompat="@drawable/ic_round_credit_card_24"
            app:tint="@color/colorLightBlack" />

        <ImageView
            android:id="@+id/rateTwoStar"
            android:layout_width="32dp"
            android:layout_height="32dp"
            android:layout_weight="1"
            app:srcCompat="@drawable/ic_round_credit_card_24"
            app:tint="@color/colorLightBlack" />

        <ImageView
            android:id="@+id/rateThreeStar"
            android:layout_width="32dp"
            android:layout_height="32dp"
            android:layout_weight="0"
            app:srcCompat="@drawable/ic_round_credit_card_24"
            app:tint="@color/colorLightBlack" />

        <ImageView
            android:id="@+id/rateFourStar"
            android:layout_width="32dp"
            android:layout_height="32dp"
            android:layout_weight="1"
            app:srcCompat="@drawable/ic_round_credit_card_24"
            app:tint="@color/colorLightBlack" />

        <ImageView
            android:id="@+id/rateFiveStar"
            android:layout_width="32dp"
            android:layout_height="32dp"
            android:layout_weight="0"
            app:srcCompat="@drawable/ic_round_credit_card_24"
            app:tint="@color/colorLightBlack" />
    </LinearLayout>

【讨论】:

  • 这样第一个和最后一个项目的一部分会被剪掉
  • 然后在 -6dp 上降低边距值。您还可以在第一个和最后一个视图上使用 layoutWeight=0
  • 这只会减少LinearLayout的宽度
  • 我写的第一个解决方案应该可以工作,但是如果它带来了正确的结果,我找不到你为什么会如此关心的理由。我不知道你在寻找什么解决方案。然后切换到约束布局
  • 图片清楚地解释了我想要存档的内容,您的“解决方案”不会导致我尝试存档的内容
【解决方案2】:

我现在正在使用这个解决方案:

https://github.com/google/flexbox-layout

而不是线性布局:

    <com.google.android.flexbox.FlexboxLayout
        android:layout_width="240dp"
        android:layout_height="match_parent"
        android:layout_marginBottom="32dp"
        app:justifyContent="space_between">

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多