Tengo un diseño de elemento donde visualizo una imagen, el nombre del producto y la imagen del producto. Debo mostrar la imagen en una relación 1: 1.5 usando el diseño de restricción. Pero cuando cargo una imagen pequeña, debajo de los textos no se muestran.
A continuación se muestra mi código de elemento 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>
- Salida con imagen larga: - https://i.imgur.com/QVnljX6.png
- Salida con imagen pequeña: - https://i.imgur.com/0ZwkVwE.png
Y si reemplazo match_parent con wrap_content, la aplicación se bloquea con el siguiente error: -
java.lang.IllegalStateException: las páginas deben llenar todo ViewPager2 (use match_parent)
android
android-viewpager2
Mahesh Babariya
fuente
fuente
Respuestas:
Descubrí que el problema está en inflar el soporte de la vista.
Tuve el mismo problema y lo resolví cambiando
a
fuente
Mientras luchaba con este problema, descubrí cuál era el problema. Mi caso de uso fue que estaba usando androidx.viewpager2.widget.ViewPager2, y llamando a Vistas normales en RecyclerView.
Si observa el error con cuidado, verá algo como esto:
La segunda línea es la clave del problema principal. Si abres ViewPager2.java verías
Android no está tomando el match_parent asignado en xml para adjuntar vistas. Puede haber mejoras futuras en la próxima versión de ViewPager2.
De todos modos, por ahora para solucionarlo, configure los parámetros de diseño como explicidad MATCH_PARENT.
Esta vista es la vista principal que contiene los hijos de View Pager.
En su caso, sería androidx.constraintlayout.widget.ConstraintLayout.
fuente
Para mí, el problema era que las páginas (es decir, el diseño principal / raíz del adaptador) en ViewPager2 no eran pareados_por lo tanto, el error era
java.lang.IllegalStateException: Pages must fill the whole ViewPager2 (use match_parent)
fuente
Me enfrenté al mismo problema ahora, el ancho y la altura del elemento del adaptador deben ser match_parent
fuente
Yo tuve el mismo problema. Usé ViewPager2 para mostrar el control deslizante. Pero su elemento XML no era MATCH_PARENT. Después de ese cambio, el problema se resolvió.
fuente
El elemento viewpager2 debe tener match_parent ancho y alto. pero SI está utilizando Enlace de vista, debe inflar el diseño, como fragmentos:
fuente
También enfrenté el mismo problema, y la solución es establecer la altura como match_parent de la vista de su elemento, es decir, el diseño utilizado en la clase de adaptador debe tener una altura como MATCH_PARENT
fuente