Как убедиться, что элемент адаптера просмотра recycler занимает всю высоту экрана

#android #android-layout #android-recyclerview #android-constraintlayout

#Android #android-макет #android-recyclerview #android-constraintlayout

Вопрос:

У меня есть recyclerview, который содержит много элементов.

Но первый элемент похож на вводный экран, на нем есть кнопка, на которую пользователь может нажать, чтобы просмотреть больше, или пользователь может прокрутить, чтобы просмотреть больше данных.

Что-то вроде следующего.

введите описание изображения здесь

Я хочу, чтобы эта кнопка находилась внизу экрана, на небольших устройствах она не видна, если пользователь не прокручивает представление. Таким образом, в основном макет занимает больше высоты, поэтому пользователю приходится прокручивать, чтобы просмотреть полный макет.

Я использую макет ограничения и подключаю его к нижней части представления.

В представлении всего 2 элемента, 1 — это ImageView, в котором нет изображения, я только добавил к нему цвет фона, а другой — TextView.

 <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:app="http://schemas.android.com/apk/res-auto">
 
 
 <ImageView
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:background="@color/Black_Color"
        android:scaleType="centerCrop"

        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
        
        
 <TextView
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginLeft="16dp"
        android:layout_marginRight="16dp"
        android:gravity="center"
        android:layout_marginBottom="50dp"
        android:textSize="17dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent" />

</      
  

Комментарии:

1. Нужна более подробная информация.

Ответ №1:

на небольших устройствах он не виден, если пользователь не прокручивает вид — похоже, ваше изображение занимает много высоты экрана на небольших устройствах, поэтому пользователь должен прокручивать экран

Если вы хотите «отключить» поведение прокрутки вашего элемента и поместить все внутри экрана (без того, чтобы просмотры выводились за пределы экрана и, таким образом, заставляли пользователя прокручивать), вы можете изменить свой макет, чтобы ваш элемент занимал только заданную высоту экрана, а не больше, и, поступая так, вы не будетеэта проблема возникает на небольших устройствах.

что-то вроде этого:

 <?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"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <ImageView
        android:id="@ id/imageView"
        android:layout_width="0dp"
        android:layout_height="0dp"
        app:layout_constraintHeight_percent="0.9"
        android:scaleType="fitXY"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        tools:srcCompat="@tools:sample/backgrounds/scenic" />

    <TextView
        android:id="@ id/textView"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:text="TextView"
        android:textSize="17sp"
        android:gravity="center"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@ id/imageView" />
</androidx.constraintlayout.widget.ConstraintLayout>

  

Хитрость заключалась в том, чтобы просто указать высоту изображения в процентах следующим образом

   android:layout_height="0dp"
  app:layout_constraintHeight_percent="0.9"
  

И теперь ваше изображение будет занимать 90% высоты при каждом размере экрана.