Ich verwende folgenden Code, um eine XML-Layoutressource zu erstellen.

<?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="wrap_content"
    android:orientation="vertical">

    <TextView
        android:id="@+id/textView1"
        android:layout_width="0dp"
        android:layout_height="@dimen/dp48"
        android:clickable="true"
        android:focusable="true"
        android:gravity="center"
        android:fontFamily="@font/trebuchet"
        android:text="@string/select_a_folder"
        android:textColor="?attr/colorAccent"
        android:textSize="16sp"
        app:layout_constraintVertical_chainStyle="packed"
        app:layout_constraintBottom_toTopOf="@+id/recyclerViewFolderList"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintStart_toStartOf="parent" />

    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/recyclerViewFolderList"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        app:layout_constraintHeight_default="wrap"
        app:layout_constraintHeight_max="350dp"
        android:maxHeight="350dp"
        app:layout_constraintBottom_toTopOf="@+id/imgViewClose2"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/textView1" />

    <com.google.android.material.button.MaterialButton
        android:id="@+id/imgViewClose2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:contentDescription="@string/close"
        style="@style/Widget.MaterialComponents.Button.OutlinedButton"
        android:src="@drawable/ic_baseline_close_24dx"
        android:text="@string/cancel"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/recyclerViewFolderList"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>

Und wenn ich recyclerview mit wenigen Elementen lade, wird die erwartete Ausgabe angezeigt.

enter image description here

Wenn ich jedoch fast 50 Elemente lade, füllt die Recyclingansicht die gesamte Ansicht aus, sodass mein Titel und die Schaltfläche zum Abbrechen fehlen.

enter image description here

Wenn ich layout_height="0dp" für recyclerview einstelle, ist recyclerview wie folgt vollständig.

enter image description here

Ich möchte die Größe von recyclerview nicht festlegen. Wenn ich es repariere, wird es funktionieren, aber es ist immer repariert, auch wenn ich nur 2 Gegenstände passiere, wird dort ein leerer Raum sein.

Ich möchte also, dass die Recycling-Ansicht wrap_content ist und auch Titel und Schaltfläche sichtbar sind.

2
Gunaseelan 19 Jän. 2019 im 10:02

7 Antworten

Beste Antwort

Diese einfache Änderung macht es funktioniert.

<androidx.recyclerview.widget.RecyclerView
    android:id="@+id/recyclerViewFolderList"
    android:layout_width="0dp"
    android:layout_height="0dp"
    app:layout_constraintHeight_default="wrap"
    app:layout_constraintBottom_toTopOf="@+id/imgViewClose2"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/textView1" />

Vielen Dank an alle, die versucht haben, mir zu helfen.

1
Gunaseelan 19 Jän. 2019 im 08:45

Ich hatte dieses Problem. Schließlich gab ich die Verwendung von ConstraintLayout hier auf und kehrte zu RelativeLayout zurück - einfach und wie ein Zauber.

ConstraintLayout ist großartig, aber manchmal ist Old School die beste Lösung.

1
Luke 14 Feb. 2019 im 13:56

Versuchen Sie, minWidth, minHeight und maxWidth, maxHeight im Stammlayout des Dialogfelds zu verwenden.

0
SinaMN75 19 Jän. 2019 im 07:16

In Ihrem Recyclerview

Einstellen

android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"

Entfernen

app:layout_constraintHeight_max="350dp"
android:maxHeight="350dp"
0
Ketan Ramani 19 Jän. 2019 im 07:20

Verwenden Sie dieses Layout

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/roundable_bg">

<android.support.v7.widget.RecyclerView
    android:id="@+id/wv_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_above="@+id/bt_ok"
    android:background="@android:color/white"
    />

<TextView
    android:id="@+id/bt_ok"
    android:layout_width="200dp"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="16dp"
    android:layout_marginBottom="8dp"
    android:padding="12dp"
    android:layout_alignParentBottom="true"
    android:textStyle="bold"
    android:background="@drawable/button_selector"
    android:gravity="center"
    android:textColor="@android:color/black"
    android:text="@string/ok" />
    </RelativeLayout>
0
user1214083 19 Jän. 2019 im 07:52

Ich denke, wenn Sie android:layout_height="match_parent" auf ConstraintLayout setzen, wird Ihr Problem behoben.

0
Charan M 19 Jän. 2019 im 07:58

Nachdem ich app:layout_constraintHeight_default="wrap" in meine recyclerView-Einschränkungen aufgenommen hatte, funktionierten sie

0
Rasel 28 Nov. 2019 im 07:01