Eu tenho um layout de item em que exibo uma imagem, nome do produto e imagem do produto. Devo exibir a imagem na proporção 1: 1.5 usando o layout de restrição. Mas quando carrego uma imagem pequena, os textos abaixo não são exibidos.
Abaixo está o meu código do item 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>
- Saída com imagem longa: - https://i.imgur.com/QVnljX6.png
- Saída com imagem pequena: - https://i.imgur.com/0ZwkVwE.png
E se eu substituir match_parent por wrap_content, o aplicativo trava com o erro abaixo: -
java.lang.IllegalStateException: as páginas devem preencher todo o ViewPager2 (use match_parent)
android
android-viewpager2
Mahesh Babariya
fonte
fonte
Respostas:
Descobri que o problema está em inflar o suporte da vista.
Eu tive o mesmo problema e resolvi mudar
para
fonte
Enquanto lutava com esse problema, descobri qual era o problema. Meu caso de uso foi que eu estava usando androidx.viewpager2.widget.ViewPager2 e chamando Views normais no RecyclerView.
Se você notar o erro com cuidado, verá algo assim:
Segunda linha é a chave para a questão principal. Se você abrir o ViewPager2.java, verá
O Android não está usando o match_parent atribuído no xml para anexar visualizações. Pode haver melhorias futuras na próxima versão do ViewPager2.
De qualquer forma, por enquanto, para corrigi-lo, defina os parâmetros de layout como explicitamente MATCH_PARENT.
Essa visualização é a visualização pai que contém os filhos Visualizar Pager.
No seu caso, seria androidx.constraintlayout.widget.ConstraintLayout.
fonte
Para mim, o problema eram as páginas (ou seja, o layout pai / raiz do adaptador) no ViewPager2 não eram match_parent, portanto, o erro foi
java.lang.IllegalStateException: Pages must fill the whole ViewPager2 (use match_parent)
fonte
enfrentei o mesmo problema agora, a largura e a altura do item do adaptador devem ser match_parent
fonte
Eu tive o mesmo problema. Eu usei o ViewPager2 para exibir o controle deslizante. Mas o item XML não era MATCH_PARENT. Após essa alteração, o problema foi resolvido.
fonte
O item viewpager2 deve ter largura e altura de match_parent. mas, se você estiver usando o View Binding, deve aumentar o layout, como fragmentos:
fonte
Também enfrentei o mesmo problema, e a solução é definir a altura como match_parent da visualização do item, ou seja, o layout usado na classe do adaptador deve ter altura como MATCH_PARENT
fonte