Ich habe ein Artikellayout, in dem ich ein Bild, einen Produktnamen und ein Produktbild anzeige. Ich muss das Bild im Verhältnis 1: 1,5 unter Verwendung des Einschränkungslayouts anzeigen. Aber wenn ich ein kleines Bild lade, werden unten keine Texte angezeigt.
Unten ist mein Code von Artikel XML: -
<?xml version="1.0" encoding="utf-8"?>
<layout 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">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/coordinatorLayoutCartRoot"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.jackandphantom.circularimageview.RoundedImage
android:id="@+id/imageViewSlider"
android:layout_width="match_parent"
android:layout_height="0dp"
android:scaleType="centerCrop"
app:layout_constraintBottom_toTopOf="@id/tvTitle"
app:layout_constraintDimensionRatio="WH,1:1.4"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:rounded_radius="0"
tools:src="@tools:sample/avatars" />
<TextView
android:id="@+id/tvTitle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:gravity="center"
android:padding="4dp"
android:text="Fitted crew neck sweater"
android:textColor="@color/colorBlack"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/imageViewSlider" />
<TextView
android:id="@+id/tvPrice"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:gravity="center"
android:padding="4dp"
android:text="$34.00"
android:textColor="@color/colorBlack"
android:textStyle="bold"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tvTitle" />
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>
- Ausgabe mit langem Bild: - https://i.imgur.com/QVnljX6.png
- Ausgabe mit kleinem Bild: - https://i.imgur.com/0ZwkVwE.png
Und wenn ich match_parent durch wrap_content ersetze, stürzt die App mit dem folgenden Fehler ab: -
java.lang.IllegalStateException: Seiten müssen den gesamten ViewPager2 ausfüllen (match_parent verwenden)
android
android-viewpager2
Mahesh Babariya
quelle
quelle
Antworten:
Ich habe herausgefunden, dass das Problem beim Aufblasen des Sichthalters liegt.
Ich hatte das gleiche Problem und löste es ändernd
zu
quelle
Während ich mit diesem Problem kämpfte, fand ich heraus, wo das Problem lag. Mein Anwendungsfall war, dass ich androidx.viewpager2.widget.ViewPager2 verwendete und normale Ansichten in RecyclerView aufrief.
Wenn Sie den Fehler sorgfältig bemerken, sehen Sie ungefähr Folgendes:
Die zweite Zeile ist der Schlüssel zum Hauptproblem. Wenn Sie ViewPager2.java öffnen, wird dies angezeigt
Android verwendet die in XML zugewiesene match_parent nicht, um Ansichten anzuhängen. Möglicherweise werden zukünftige Verbesserungen in der nächsten Version von ViewPager2 vorgenommen.
Um dies zu beheben, legen Sie die Layoutparameter zunächst als MATCH_PARENT-Explizität fest.
Diese Ansicht ist die übergeordnete Ansicht, in der untergeordnete Ansichtspager gespeichert sind.
In diesem Fall wäre es androidx.constraintlayout.widget.ConstraintLayout.
quelle
Für mich war das Problem, dass Seiten (dh übergeordnetes / Root-Layout des Adapters) in ViewPager2 nicht match_parent waren, daher war der Fehler
java.lang.IllegalStateException: Pages must fill the whole ViewPager2 (use match_parent)
quelle
Ich hatte jetzt das gleiche Problem. Die Breite und Höhe Ihres Adapterelements muss match_parent sein
quelle
Ich hatte das gleiche Problem. Ich habe ViewPager2 verwendet, um den Schieberegler anzuzeigen. Das XML-Element war jedoch nicht MATCH_PARENT. Nach dieser Änderung wurde das Problem behoben.
quelle
Das Element viewpager2 sollte die Breite und Höhe von match_parent haben. Wenn Sie jedoch die Ansichtsbindung verwenden, sollten Sie das Layout wie z. B. Fragmente aufblasen:
quelle
Ich hatte auch das gleiche Problem, und die Lösung besteht darin, die Höhe als match_parent Ihrer Elementansicht festzulegen, dh das in der Adapterklasse verwendete Layout muss die Höhe MATCH_PARENT haben
quelle