Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

RecyclerView in ConstraintLayout overlapping other elements

I'm doing a simple list activity with the following components: an EditText, a RecyclerView, a ProgressBar and a Textview. Everything works really well, except for the RecyclerView which overlaps the EditText and goes "beyond" the screen bottom so the last item is partially cut out (see the screenshots). What an I doing wrong?

MainActivity:

<?xml version="1.0" encoding="utf-8"?> <android.support.constraint.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="jacopo.com.flickrgallery.GalleryActivity">      <EditText         android:id="@+id/search_text"         android:layout_width="match_parent"         android:layout_height="wrap_content"         android:layout_marginEnd="8dp"         android:layout_marginStart="8dp"         android:layout_marginTop="8dp"         android:hint="search by tag..."         app:layout_constraintEnd_toEndOf="parent"         app:layout_constraintStart_toStartOf="parent"         app:layout_constraintTop_toTopOf="parent" />      <ProgressBar         android:id="@+id/gallery_progress"         android:layout_width="wrap_content"         android:layout_height="wrap_content"         android:layout_marginBottom="8dp"         android:layout_marginEnd="8dp"         android:layout_marginStart="8dp"         android:layout_marginTop="8dp"         app:layout_constraintBottom_toBottomOf="parent"         app:layout_constraintEnd_toEndOf="parent"         app:layout_constraintStart_toStartOf="parent"         app:layout_constraintTop_toBottomOf="@+id/search_text" />      <android.support.v7.widget.RecyclerView         android:id="@+id/gallery_list"         android:layout_width="match_parent"         android:layout_height="wrap_content"         android:layout_marginBottom="8dp"         android:layout_marginEnd="8dp"         android:layout_marginStart="8dp"         android:layout_marginTop="8dp"         app:layout_constraintBottom_toBottomOf="parent"         app:layout_constraintEnd_toEndOf="parent"         app:layout_constraintStart_toStartOf="parent"         app:layout_constraintTop_toBottomOf="@+id/search_text" />      <TextView         android:id="@+id/gallery_error"         android:layout_width="wrap_content"         android:layout_height="wrap_content"         android:layout_marginBottom="8dp"         android:layout_marginEnd="8dp"         android:layout_marginStart="8dp"         android:layout_marginTop="8dp"         app:layout_constraintBottom_toBottomOf="parent"         app:layout_constraintEnd_toEndOf="parent"         app:layout_constraintStart_toStartOf="parent"         app:layout_constraintTop_toBottomOf="@+id/search_text"         tools:text="error" />  </android.support.constraint.ConstraintLayout> 

recyclerview overlapping editext recyclerView going outside the screen

like image 896
jack_the_beast Avatar asked Nov 23 '17 12:11

jack_the_beast


People also ask

What is nested RecyclerView?

A nested RecyclerView is an implementation of a RecyclerView within a RecyclerView. An example of such a layout can be seen in a variety of apps such as the Play store where the outer (parent) RecyclerView is of Vertical orientation whereas the inner (child) RecyclerViews are of horizontal orientations.

Is ConstraintLayout a ViewGroup?

A ConstraintLayout is a ViewGroup which allows you to position and size widgets in a flexible way. Note: ConstraintLayout is available as a support library that you can use on Android systems starting with API level 9 (Gingerbread).

Does RecyclerView scroll?

To be able to scroll through a vertical list of items that is longer than the screen, you need to add a vertical scrollbar. Inside RecyclerView , add an android:scrollbars attribute set to vertical .

What is RecyclerView LayoutManager?

A LayoutManager is responsible for measuring and positioning item views within a RecyclerView as well as determining the policy for when to recycle item views that are no longer visible to the user.


2 Answers

You are using android:layout_height="wrap_content" for RecyclerView but it's looks like you need to limit height. Try it with android:layout_height="0dp". In this case it is equals to app:layout_constraintTop_toBottomOf="@+id/search_text" and app:layout_constraintBottom_toBottomOf="parent"

like image 141
Stanislav Bondar Avatar answered Sep 17 '22 13:09

Stanislav Bondar


I had the exact same problem, and adding

app:layout_constrainedHeight="true" 

to the RecyclerView solved it.

like image 40
Bendegúz Kálmán Avatar answered Sep 20 '22 13:09

Bendegúz Kálmán