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

Android布局中btn_ok按钮高度小于btn_later的解决方法

问题:两个Button高度不一致的解决方法

我的布局里有两个Button控件btn_later和btn_ok,本该尺寸一致,但现在btn_ok的高度比btn_later小,请问怎么解决?

显示效果(左侧为btn_later,右侧为btn_ok):
按钮高度不一致效果

布局代码(rate_dialog_main.xml)

<?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"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_margin="20dp">

    <ImageView
        android:id="@+id/image_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:srcCompat="@mipmap/ic_launcher" />

    <TextView
        android:id="@+id/text_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dp"
        android:text="@string/grateful_for_your_rating"
        android:textSize="18sp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/image_view" />

    <TextView
        android:id="@+id/text_view_2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dp"
        android:text="&#128522;"
        android:textSize="22sp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/text_view" />


    <RatingBar
        android:id="@+id/rating_bar"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:numStars="5"
        android:stepSize="1"
        android:layout_marginVertical="10dp"
        android:theme="@style/rating_bar"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/text_view_2" />

    <LinearLayout
        android:id="@+id/ll"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:orientation="horizontal"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/rating_bar">

        <Button
            android:id="@+id/btn_later"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="5dp"
            android:layout_marginRight="10dp"
            android:background="@color/c_2196f3"
            android:textColor="@color/c_4acfac"
            android:text="@string/later" />

        <Button
            android:id="@+id/btn_ok"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="5dp"
            android:alpha="0.5"
            android:text="@string/rate"
            android:textColor="@android:color/white"
            android:enabled="false" />

    </LinearLayout>

</androidx.constraintlayout.widget.ConstraintLayout>

解决方法

问题根源是两个Button的样式不统一:btn_later自定义了背景,btn_ok用系统默认样式且处于禁用状态,导致高度差异。以下是几种修复方式:

方法1:统一背景样式

给btn_ok设置和btn_later相同的背景,若要区分禁用状态,可以用selector定义不同状态的背景颜色:

<Button
    android:id="@+id/btn_ok"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginLeft="10dp"
    android:layout_marginRight="5dp"
    android:alpha="0.5"
    android:text="@string/rate"
    android:textColor="@android:color/white"
    android:enabled="false"
    android:background="@color/c_2196f3" />

方法2:让LinearLayout强制子View高度一致

给LinearLayout添加weightSum,给两个Button设置layout_weight,同时让btn_ok高度匹配父容器:

<LinearLayout
    android:id="@+id/ll"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:orientation="horizontal"
    android:weightSum="2"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/rating_bar">

    <Button
        android:id="@+id/btn_later"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:layout_marginLeft="5dp"
        android:layout_marginRight="10dp"
        android:background="@color/c_2196f3"
        android:textColor="@color/c_4acfac"
        android:text="@string/later" />

    <Button
        android:id="@+id/btn_ok"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="5dp"
        android:alpha="0.5"
        android:text="@string/rate"
        android:textColor="@android:color/white"
        android:enabled="false" />

</LinearLayout>

方法3:用ConstraintLayout直接约束按钮

移除LinearLayout,直接用ConstraintLayout让两个Button高度对齐:

<Button
    android:id="@+id/btn_later"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginRight="10dp"
    android:background="@color/c_2196f3"
    android:textColor="@color/c_4acfac"
    android:text="@string/later"
    app:layout_constraintEnd_toStartOf="@+id/btn_ok"
    app:layout_constraintTop_toBottomOf="@+id/rating_bar"
    app:layout_constraintBottom_toBottomOf="@+id/btn_ok"
    app:layout_constraintHorizontal_bias="0.5" />

<Button
    android:id="@+id/btn_ok"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginLeft="10dp"
    android:alpha="0.5"
    android:text="@string/rate"
    android:textColor="@android:color/white"
    android:enabled="false"
    app:layout_constraintStart_toEndOf="@+id/btn_later"
    app:layout_constraintTop_toBottomOf="@+id/rating_bar"
    app:layout_constraintBottom_toBottomOf="@+id/btn_later"
    app:layout_constraintHorizontal_bias="0.5" />

内容的提问来源于stack exchange,提问作者user21597761

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 22:37:05