You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android ConstraintLayout下GridView卡片实现类Bootstrap三段式布局

解决方案

布局不符合预期的核心原因有三点:

  1. 根ConstraintLayout宽度设置为wrap_content,导致内容区没有铺满CardView
  2. footer的左右约束绑定了内部的name、image控件,而非父布局,进一步限制了footer的宽度
  3. footer的LinearLayout内部没有做空间分配,三个子控件只会按自身宽度紧凑排列

修改步骤

  • 将根ConstraintLayout的android:layout_width从wrap_content改为match_parent,高度改为match_parent撑满整个CardView
  • 修改footer的约束,将layout_constraintStart_toStartOf和layout_constraintEnd_toEndOf都绑定到parent,让footer占满CardView宽度
  • 给footer的LinearLayout设置android:weightSum="3",三个子控件各分配android:layout_weight="1",每个控件设置android:gravity="center"实现左中右均匀分布
  • 调整minus控件的宽度规则,避免符号显示不全,可按需给LinearLayout设置固定高度更美观

完整修改后代码

<?xml version="1.0" encoding="utf-8"?>
<androidx.cardview.widget.CardView
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:card_view="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="350dp"
    android:layout_margin="@dimen/margin_small"
    card_view:cardCornerRadius="10dp"
    card_view:cardElevation="@dimen/margin_small">

    <androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_margin="@dimen/margin_small"
        android:layout_gravity="center">

        <TextView
            android:id="@+id/name"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/name"
            card_view:layout_constraintTop_toTopOf="parent"
            card_view:layout_constraintBottom_toTopOf="@+id/cost"
            card_view:layout_constraintStart_toStartOf="parent"
            android:maxLines="3"
            android:padding="9dp"
            android:textAppearance="?android:attr/textAppearanceSmall"/>

        <TextView
            android:id="@+id/cost"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/ksh_000_00"
            card_view:layout_constraintTop_toBottomOf="@+id/name"
            card_view:layout_constraintBottom_toTopOf="@+id/image"
            card_view:layout_constraintStart_toStartOf="parent"
            android:textAppearance="?android:attr/textAppearanceSmall"
            android:typeface="serif"/>

        <ImageView
            android:id="@+id/image"
            android:layout_width="match_parent"
            android:layout_height="150dp"
            android:contentDescription="@string/food_fuzz_logo"
            android:src="@drawable/logo"
            card_view:layout_constraintBottom_toTopOf="@+id/footer"
            card_view:layout_constraintEnd_toEndOf="parent"
            card_view:layout_constraintStart_toStartOf="parent"
            card_view:layout_constraintTop_toBottomOf="@+id/cost"
            tools:scaleType="fitCenter" />

        <LinearLayout
            android:id="@+id/footer"
            android:layout_width="match_parent"
            android:layout_height="40dp"
            card_view:layout_constraintTop_toBottomOf="@+id/image"
            card_view:layout_constraintBottom_toBottomOf="parent"
            card_view:layout_constraintEnd_toEndOf="parent"
            card_view:layout_constraintStart_toStartOf="parent"
            android:orientation="horizontal"
            android:weightSum="3"
            android:background="@color/gradient_background">

            <TextView
                android:id="@+id/minus"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:gravity="center"
                android:text="@string/minus"
                android:textColor="@color/white"
                android:textSize="18sp"
                android:textStyle="bold" />

            <TextView
                android:id="@+id/quantity"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:text="@string/zero"
                android:textColor="@color/white"
                android:textSize="18sp"
                android:textStyle="bold"
                android:gravity="center"/>

            <TextView
                android:id="@+id/plus"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:text="@string/plus"
                android:textColor="@color/white"
                android:textSize="18sp"
                android:textStyle="bold"
                android:gravity="center"/>
        </LinearLayout>

    </androidx.constraintlayout.widget.ConstraintLayout>

</androidx.cardview.widget.CardView>

内容的提问来源于stack exchange,提问作者The Only Smart Boy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 06:18:05