2 votes

Bouton au bas de LinearLayout

Je suis en train de créer une application dans laquelle j'ai un RecyclerView . J'ai également ajouté un bouton, mais il ne s'affiche pas. Voir la photo de gauche. Ce que je veux maintenant, c'est rendre le RecyclerView de manière à ce que le bouton de mai soit visible, comme sur la photo de droite. Comment puis-je y parvenir ?

Sous les photos, vous pouvez voir mon code xml. Je voudrais que le RecyclerView est relative/dynamique.

enter image description here

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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="com.test.test.MainActivity"
    android:orientation="vertical"
    android:background="@color/colorAccent">

    <include
        android:id="@+id/toolbar"
        layout="@layout/toolbar"/>

    <androidx.cardview.widget.CardView
        android:id="@+id/cardViewMiddle"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginRight="20dp"
        android:layout_marginLeft="20dp"
        android:layout_marginTop="20dp"
        android:layout_marginBottom="20dp"
        app:cardCornerRadius="15dp">

        <androidx.core.widget.NestedScrollView
            android:layout_width="match_parent"
            android:layout_height="match_parent">
            <androidx.recyclerview.widget.RecyclerView

                android:id="@+id/recyclerview"
                android:layout_width="match_parent"
                android:layout_height="match_parent">

            </androidx.recyclerview.widget.RecyclerView>
        </androidx.core.widget.NestedScrollView>
    </androidx.cardview.widget.CardView>

    <Button
        android:id="@+id/btnCheckout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/round_corner"
        android:backgroundTint="@color/colorPrimaryDark"
        android:elevation="16dp"
        android:text="START"
        android:textColor="#FFFFFF"
        android:textStyle="bold" />

</LinearLayout>

1voto

Simplici7y Points 85

Le problème est que vous avez défini le CardView hauteur à match_parent pour qu'il occupe tout l'écran. Il est préférable d'utiliser ConstraintLayout pour ce type de mise en page, mais vous pouvez également y remédier avec un minimum d'effort comme ceci :

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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="com.test.test.MainActivity"
    android:orientation="vertical"
    android:background="@color/colorAccent">

    <include
        android:id="@+id/toolbar"
        layout="@layout/toolbar"/>

    <androidx.cardview.widget.CardView
        android:id="@+id/cardViewMiddle"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_marginRight="20dp"
        android:layout_marginLeft="20dp"
        android:layout_marginTop="20dp"
        android:layout_marginBottom="20dp"
        android:layout_weight="1"
        app:cardCornerRadius="15dp">

        <androidx.core.widget.NestedScrollView
            android:layout_width="match_parent"
            android:layout_height="match_parent">
            <androidx.recyclerview.widget.RecyclerView

                android:id="@+id/recyclerview"
                android:layout_width="match_parent"
                android:layout_height="match_parent">

            </androidx.recyclerview.widget.RecyclerView>
        </androidx.core.widget.NestedScrollView>
    </androidx.cardview.widget.CardView>

    <Button
        android:id="@+id/btnCheckout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/round_corner"
        android:backgroundTint="@color/colorPrimaryDark"
        android:elevation="16dp"
        android:text="START"
        android:textColor="#FFFFFF"
        android:textStyle="bold" />

</LinearLayout>

Notez que je n'ai modifié que la fonction layout_height a 0dp et a ajouté ce qui suit : android:layout_weight="1" Ce qui indiquera à la mise en page de s'étirer au maximum (sans couvrir les autres éléments situés en dessous).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X