android 约束布局0dp(匹配约束)

nbnkbykc  于 2022-12-31  发布在  Android
关注(0)|答案(3)|浏览(210)

我无法理解约束行为。请查看此布局

<?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"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <Button
        android:id="@+id/button"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:background="@color/purple_200"
        android:text="whatever"

        app:layout_constraintDimensionRatio="w, 1:1"

        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>

假设0dp表示所有可用空间。此按钮的尺寸为0dp,比例为1:1。并且它与父项左对齐和上对齐,所以我猜它将显示一个以父项宽度作为边的正方形。但它显示了一些我意想不到的东西,只是左上角的一个点(甚至它有一些文本):

很明显我对这个布局没有完全理解,请指点

aemubtdh

aemubtdh1#

复制并粘贴此内容

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
    <Button
        android:id="@+id/btn"
        android:layout_width="126dp"
        android:layout_height="53dp"
        android:text="Button"
        android:textSize="20sp"
        android:textStyle="bold"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

u2nhd7ah

u2nhd7ah2#

我认为你需要添加更多的约束!
添加以下内容:

app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"

对于这种情况,它必须是这样的:

<Button
        android:id="@+id/button"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:background="@color/purple_200"
        android:text="whatever"
        app:layout_constraintDimensionRatio="w, 1:1"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

希望这对你有帮助,祝你有美好的一天!别忘了喝咖啡!保持编码和保持真棒!

pieyvz9o

pieyvz9o3#

您需要添加更多约束才能正常工作

app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintBottom_toBottomOf="parent"

如果使用0dp作为高度,则需要同时约束topbottom,反之亦然

相关问题