Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Align items in a RecyclerView at the bottom

I have a RecyclerView inside of a ConstraintLayout whose top starts at the bottom of a textView, and whose bottom stretches down to the parent. I want the items in this RecyclerView to default to the bottom of the RecyclerView. I tried adding gravity="bottom" and also tried the same thing with foregroundGravity and layout_gravity. I also tried adding layout_gravity="bottom" to my recyclerView item's layout. Still, all the items in the recyclerView continues to default to the top. Is there anything i can do to make sure the items are at the bottom? Here is the xml:

<android.support.constraint.ConstraintLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:id="@+id/my_tv"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:text="needed to unlock next coupon"
        android:textColor="@color/gray"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@id/irrelevant_tv"
        android:layout_marginTop="@dimen/spacing_tiny"
        android:gravity="center"
        />

    <android.support.v7.widget.RecyclerView
        android:id="@+id/rv"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:layout_marginTop="@dimen/spacing_xl"
        android:paddingTop="@dimen/spacing_large"
        android:overScrollMode="always"
        app:layoutManager="android.support.v7.widget.LinearLayoutManager"
        app:layout_constraintTop_toBottomOf="@id/my_tv"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent" />

</android.support.constraint.ConstraintLayout>

I don't want to do wrap_content on recyclerView either, because otherwise it is not scrollable (I always have 3 items in this recyclerView, and based on the user's display settings, the recyclerView can get pushed off the screen, which requires me to be able to scroll)

like image 823
hermt2 Avatar asked Nov 28 '17 19:11

hermt2


People also ask

What is LinearLayoutManager in RecyclerView?

RecyclerView provides these built-in layout managers: LinearLayoutManager shows items in a vertical or horizontal scrolling list. GridLayoutManager shows items in a grid. StaggeredGridLayoutManager shows items in a staggered grid.

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.

How do I remove a space between two items in RecyclerView?

Try to use cardElevation=0dp. This should remove the extra spacing between recyclerview items.


2 Answers

You can use the method LinearLayoutManager#setStackFromEnd(boolean). Then your items will be rendered starting from bottom of view.

See the docs.

like image 108
dimrsilva Avatar answered Oct 12 '22 01:10

dimrsilva


You can also add this to XML layout:

app:stackFromEnd="true"
like image 28
Konstantin Konopko Avatar answered Oct 12 '22 02:10

Konstantin Konopko