XML布局和软件按钮的问题

时间:2018-07-01 05:15:02

标签: android xml android-constraintlayout

因此,基本上,我有一个带有4个按钮的活动,在Android Studio中,这些按钮看上去不像屏幕底部的软件按钮,但是当我在手机上运行它们时,它们却不是。我不确定底部按钮是否有正确的约束条件?

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.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=".NewMainMenu"
    tools:layout_editor_absoluteY="25dp">

    <Button
        android:id="@+id/button"
        android:layout_width="411dp"
        android:layout_height="100dp"
        android:layout_marginTop="258dp"
        android:background="@android:color/holo_blue_light"
        android:text="Button"
        app:layout_constraintBottom_toTopOf="@+id/button4"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <Button
        android:id="@+id/button4"
        android:layout_width="411dp"
        android:layout_height="100dp"
        android:background="@android:color/holo_red_light"
        android:text="Button"
        app:layout_constraintBottom_toTopOf="@+id/button3"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/button" />

    <Button
        android:id="@+id/button3"
        android:layout_width="411dp"
        android:layout_height="100dp"
        android:background="@android:color/holo_green_light"
        android:text="Button"
        app:layout_constraintBottom_toTopOf="@+id/button2"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/button4" />

    <Button
        android:id="@+id/button2"
        android:layout_width="411dp"
        android:layout_height="100dp"
        android:background="@android:color/holo_orange_light"
        android:text="Button"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/button3" />
</android.support.constraint.ConstraintLayout>

What the app looks like in Android Studio

This is what the app looks like on my phone

4 个答案:

答案 0 :(得分:0)

如果从ConstraintLayout中使用,则可以添加以下属性:

app:layout_constraintBottom_toBottomOf="parent"

通过此代码,您的视图停留在布局的底部。

,对于其他视图,您可以从此代码中使用:

        app:layout_constraintBottom_toBottomOf="@+id/{bottom View}"

答案 1 :(得分:0)

问题是您将按钮的高度和顶部按钮的顶部边距明确设置为固定值。在您的设备上,所有高度和填充的总和超过了设备的高度。

一个简单的解决方法是将最上面的按钮的顶部约束到父级,并删除顶部边距。然后它将位于其下方的按钮上方,但不会从父项的顶部向下推。

通常,出于这个确切原因,应避免使用固定大小的宽度和高度。您可以利用ConstraintLayout中的加权链之类的东西来按比例而不是显式地调整大小。

有关更多信息,请参见ConstraintLayout文档。

希望有帮助!

答案 2 :(得分:0)

您的约束是错误的。您同时使用了app:layout_constraintTop_toBottomOfapp:layout_constraintBottom_toTopOf约束,这是错误的。仅使用app:layout_constraintBottom_toTopOf约束来堆叠一个以上的约束。 使用此代码:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.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=".NewMainMenu"
tools:layout_editor_absoluteY="25dp">

<Button
    android:id="@+id/button"
    android:layout_width="0dp"
    android:layout_height="100dp"
    android:background="@android:color/holo_blue_light"
    android:text="Button"
    app:layout_constraintBottom_toTopOf="@+id/button4"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.494"
    app:layout_constraintStart_toStartOf="parent" />

<Button
    android:id="@+id/button4"
    android:layout_width="0dp"
    android:layout_height="100dp"
    android:background="@android:color/holo_red_light"
    android:text="Button"
    app:layout_constraintBottom_toTopOf="@+id/button3"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent" />

<Button
    android:id="@+id/button3"
    android:layout_width="0dp"
    android:layout_height="100dp"
    android:background="@android:color/holo_green_light"
    android:text="Button"
    app:layout_constraintBottom_toTopOf="@+id/button2"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent" />

<Button
    android:id="@+id/button2"
    android:layout_width="0dp"
    android:layout_height="100dp"
    android:background="@android:color/holo_orange_light"
    android:text="Button"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"


    />
</android.support.constraint.ConstraintLayout>

答案 3 :(得分:0)

enter image description here某些代码不正确 请输入以下代码:

<android.support.constraint.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">

<Button
    android:id="@+id/button3"
    android:layout_width="match_parent"
    android:layout_height="100dp"
    android:background="@android:color/holo_green_light"
    android:text="Button"
    app:layout_constraintBottom_toTopOf="@+id/button2"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent" />

<Button
    android:id="@+id/button2"
    android:layout_width="match_parent"
    android:layout_height="100dp"
    android:background="@android:color/holo_blue_light"
    android:text="Button"
    app:layout_constraintBottom_toBottomOf="parent" />

<Button
    android:layout_width="match_parent"
    android:layout_height="100dp"
    android:background="@android:color/holo_orange_dark"
    android:text="Button"
    app:layout_constraintBottom_toTopOf="@+id/button3"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.0"
    app:layout_constraintStart_toStartOf="parent" />