项目之间的水平线性布局空间,没有左右填充
Posted
技术标签:
【中文标题】项目之间的水平线性布局空间,没有左右填充【英文标题】:Horizontal LinearLayout space between items without padding left and right 【发布时间】:2021-10-24 05:06:00 【问题描述】:我需要 LinearLayout 中的项目之间的空间,而不需要在两侧进行填充。
这张图片会解释它:
这是 XML:
<LinearLayout
android:layout_
android:layout_
android:layout_marginBottom="32dp"
android:orientation="horizontal">
<ImageView
android:id="@+id/rateOneStar"
android:layout_
android:layout_
android:layout_weight="1"
app:srcCompat="@drawable/ic_star"
app:tint="@color/ratingStarInactive" />
<ImageView
android:id="@+id/rateTwoStar"
android:layout_
android:layout_
android:layout_weight="1"
app:srcCompat="@drawable/ic_star"
app:tint="@color/ratingStarInactive" />
<ImageView
android:id="@+id/rateThreeStar"
android:layout_
android:layout_
android:layout_weight="1"
app:srcCompat="@drawable/ic_star"
app:tint="@color/ratingStarInactive" />
<ImageView
android:id="@+id/rateFourStar"
android:layout_
android:layout_
android:layout_weight="1"
app:srcCompat="@drawable/ic_star"
app:tint="@color/ratingStarInactive" />
<ImageView
android:id="@+id/rateFiveStar"
android:layout_
android:layout_
android:layout_weight="1"
app:srcCompat="@drawable/ic_star"
app:tint="@color/ratingStarInactive" />
</LinearLayout>
【问题讨论】:
在你告诉我们忽略的部分,你应该写下你为实现这一目标所做的最佳尝试。 使用协调器布局。 developer.android.com/reference/androidx/coordinatorlayout/… 【参考方案1】:编辑:更好的解决方案
在边缘视图上设置 layoutWeight 会移除它们周围的填充。
<LinearLayout
android:id="@+id/requested"
android:layout_
android:layout_
android:layout_marginBottom="32dp"
android:orientation="horizontal"
app:layout_constraintTop_toBottomOf="@id/original">
<ImageView
android:id="@+id/rateOneStar"
android:layout_
android:layout_
android:layout_weight="0"
app:srcCompat="@drawable/ic_round_credit_card_24"
app:tint="@color/colorLightBlack" />
<ImageView
android:id="@+id/rateTwoStar"
android:layout_
android:layout_
android:layout_weight="1"
app:srcCompat="@drawable/ic_round_credit_card_24"
app:tint="@color/colorLightBlack" />
<ImageView
android:id="@+id/rateThreeStar"
android:layout_
android:layout_
android:layout_weight="0"
app:srcCompat="@drawable/ic_round_credit_card_24"
app:tint="@color/colorLightBlack" />
<ImageView
android:id="@+id/rateFourStar"
android:layout_
android:layout_
android:layout_weight="1"
app:srcCompat="@drawable/ic_round_credit_card_24"
app:tint="@color/colorLightBlack" />
<ImageView
android:id="@+id/rateFiveStar"
android:layout_
android:layout_
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_
android:layout_
android:layout_marginBottom="32dp"
app:justifyContent="space_between">
【讨论】:
以上是关于项目之间的水平线性布局空间,没有左右填充的主要内容,如果未能解决你的问题,请参考以下文章