如何在ConstraintLayout中使按钮响应?

问题描述 投票:0回答:3

我是Android的初学者,想在底部建​​立4个按钮,如图所示。中间的一个按钮是不可能的,因为我尝试将其设置为响应式并且消失了。您能向我解释一下我如何将这些按钮以相同的距离设置为彼此相邻,并使其以正确的方式做出响应吗?

enter image description here

这是我的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"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#f4f4f4"
tools:context=".MainActivity">

<TextView
    android:id="@+id/textView"
    android:layout_width="0dp"
    android:layout_height="0dp"
    android:layout_marginBottom="0dp"
    android:gravity="center_horizontal"
    android:shadowColor="#000000"
    android:text="This app has 50000 downloads!"
    android:textColor="#eadca6"
    android:textSize="60sp"
    android:textStyle="bold"
    app:layout_constraintBottom_toTopOf="@+id/guideline"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHeight_percent="0.70"
    app:layout_constraintHorizontal_bias="0.50"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintWidth_percent="0.9" />

<androidx.constraintlayout.widget.Guideline
    android:id="@+id/guideline2"
    android:layout_width="wrap_content"
    android:layout_height="0dp"
    android:orientation="horizontal"
    app:layout_constraintGuide_percent="0.86" />

<androidx.constraintlayout.widget.Guideline
    android:id="@+id/guideline"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    app:layout_constraintGuide_percent="0.77" />

<Button
    android:id="@+id/button12"
    app:layout_constraintWidth_percent="0.2"
    android:layout_height="wrap_content"
    android:layout_width="0dp"
    android:text="Button"
    app:layout_constraintEnd_toStartOf="@+id/button13"
    app:layout_constraintHorizontal_bias="0.0"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="@+id/button13" />

<Button
    android:id="@+id/button13"
    android:layout_width="0dp"
    android:layout_height="0dp"
    android:text="Button"
    android:textSize="20sp"
    app:layout_constraintEnd_toStartOf="@+id/button14"
    app:layout_constraintTop_toTopOf="@+id/guideline2"
    app:layout_constraintHeigth_percent="0.1"
    app:layout_constraintWidth_percent="0.2" />

<Button
    android:id="@+id/button14"
    app:layout_constraintWidth_percent="0.2"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:text="Button"
    app:layout_constraintEnd_toStartOf="@+id/button15"
    app:layout_constraintTop_toTopOf="@+id/button13" />

<Button
    android:id="@+id/button15"
    app:layout_constraintWidth_percent="0.2"
    android:layout_height="wrap_content"
    android:text="Button"
    android:layout_width="0dp"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintTop_toTopOf="@+id/button13" />


</androidx.constraintlayout.widget.ConstraintLayout>
android xml layout responsive-design android-constraintlayout
3个回答
0
投票

尝试一下

<?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"
    android:background="#f4f4f4"
    tools:context=".MainActivity">

    <TextView
        android:id="@+id/textView"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:layout_marginBottom="0dp"
        android:gravity="center_horizontal"
        android:shadowColor="#000000"
        android:text="This app has 50000 downloads!"
        android:textColor="#eadca6"
        android:textSize="60sp"
        android:textStyle="bold"
        app:layout_constraintBottom_toTopOf="@+id/guideline"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHeight_percent="0.70"
        app:layout_constraintHorizontal_bias="0.50"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintWidth_percent="0.9" />

    <androidx.constraintlayout.widget.Guideline
        android:id="@+id/guideline2"
        android:layout_width="wrap_content"
        android:layout_height="0dp"
        android:orientation="horizontal"
        app:layout_constraintGuide_percent="0.86" />

    <androidx.constraintlayout.widget.Guideline
        android:id="@+id/guideline"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        app:layout_constraintGuide_percent="0.77" />


    <Button
        android:id="@+id/btnOne"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_margin="10dp"
        android:text="One"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toStartOf="@id/btnTwo"
        app:layout_constraintStart_toStartOf="parent" />

    <Button
        android:id="@+id/btnTwo"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_margin="10dp"
        android:text="Two"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toStartOf="@id/btnThree"
        app:layout_constraintStart_toEndOf="@id/btnOne" />

    <Button
        android:id="@+id/btnThree"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_margin="10dp"
        android:text="Three"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toStartOf="@id/btnFour"
        app:layout_constraintStart_toEndOf="@id/btnTwo" />

    <Button
        android:id="@+id/btnFour"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_margin="10dp"
        android:text="Four"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toEndOf="@id/btnThree" />


</androidx.constraintlayout.widget.ConstraintLayout>

输出

enter image description hereenter image description here


0
投票

[尝试将所有按钮添加到线性布局中,并且将其方向设置为水平,并且按钮会占用等距离。要使按钮具有响应性,请使用onclicklistener();。得到回应


0
投票

仅将每个按钮约束到下一个按钮,并将第一个按钮的开始约束到父对象的开始,将最后一个按钮的约束约束到父对象的末端,将所有宽度设置为0dp,这将使您的按钮尽可能水平扩展。然后在设计视图中选择所有按钮(使用ctrl键并单击),然后单击鼠标右键,转到链并选择水平链,这将使按钮之间的距离相等并生成一些代码,这不是您自己难做的,但是这样比较容易。使用此代码:

<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">

    <Button
        android:id="@+id/button4"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:text="Button"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintStart_toEndOf="@+id/button3" />

    <Button
        android:id="@+id/button3"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:text="Button"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toStartOf="@+id/button4"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintStart_toEndOf="@+id/button2" />

    <Button
        android:id="@+id/button2"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:text="Button"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toStartOf="@+id/button3"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintStart_toEndOf="@+id/button" />

    <Button
        android:id="@+id/button"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:text="Button"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toStartOf="@+id/button2"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintStart_toStartOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>

这是最终视图。您可以按自己喜欢的方式添加一些边距,并注意您也应该将文本视图添加到此布局中

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.