studio recyclerview make how ejemplo dependency create android android-layout android-recyclerview

android - make - recyclerview dependency



RecyclerView está cortando el último elemento (6)

Tengo un fragmento con una barra de herramientas y un recyclerView dentro de ella.

Estoy rellenando el recyclerView con datos ficticios y luego intento mostrarlos. Por alguna razón, el último elemento del recyclerView se está cortando.

Este es el XML del fragmento:

<?xml version="1.0" encoding="utf-8"?> <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/background_1" android:fitsSystemWindows="true"> <android.support.design.widget.AppBarLayout android:id="@+id/appbar_layout" android:layout_width="match_parent" android:layout_height="@dimen/height_of_app_bar" android:fitsSystemWindows="true" android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> <android.support.design.widget.CollapsingToolbarLayout android:id="@+id/collapsing_toolbar" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true" app:contentScrim="@color/primary" app:expandedTitleMarginEnd="64dp" app:expandedTitleMarginStart="48dp" app:layout_scrollFlags="scroll|exitUntilCollapsed"> <ImageView android:id="@+id/backdrop" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true" android:scaleType="centerCrop" android:src="@drawable/placeholder_rect_header" app:layout_collapseMode="parallax"/> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" app:layout_collapseMode="pin" app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/> </android.support.design.widget.CollapsingToolbarLayout> </android.support.design.widget.AppBarLayout> <android.support.v7.widget.RecyclerView android:id="@+id/simpleList" android:layout_width="match_parent" android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior"/> </android.support.design.widget.CoordinatorLayout>

Los elementos en la lista son realmente simples:

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="200dp" android:background="@color/background_1" android:orientation="horizontal" android:padding="@dimen/space_for_a_bit_of_air"> <ImageView android:id="@+id/album_cover" android:layout_width="100dp" android:layout_height="100dp" android:layout_gravity="center_vertical" android:scaleType="fitXY" android:src="@drawable/placeholder_album_cover"/> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:layout_marginLeft="@dimen/space_for_distinguishing_stuff" android:orientation="vertical"> <TextView android:id="@+id/album_title" style="@style/titleText" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/sample_text_c"/> <TextView android:id="@+id/album_year" style="@style/subtitleText" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/sample_text_a"/> </LinearLayout> </LinearLayout>

Ahora estoy al final de la lista, pero el último elemento aún parece estar cortado.

Estoy usando la última versión a partir de 2015-09-23 de las bibliotecas de google, 23.0.1, (es decir, com.android.support:recyclerview-v7:23.0.1), y la siguiente configuración en el build.gradle:

compileSdkVersion 23 buildToolsVersion "23.0.1" defaultConfig { minSdkVersion 14 targetSdkVersion 23 versionCode 1 versionName "1.0" multiDexEnabled true// Enabling multidex support }

Cualquier ayuda sería muy apreciada ya que me estoy volviendo loco con este problema :(

SOLUCIÓN

Ok, después de limpiar el código a lo esencial y eliminar la complejidad, encontré el problema: era una combinación de indicadores erróneos y atributos extra o extraviados. Lo siguiente funciona bien tanto para Android 4.x como para 5.x:

<?xml version="1.0" encoding="utf-8"?> <android.support.design.widget.CoordinatorLayout 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" android:background="@color/background_1" android:fitsSystemWindows="true"> <android.support.design.widget.AppBarLayout android:id="@+id/appbar_layout" android:layout_width="match_parent" android:layout_height="@dimen/height_of_app_bar" android:fitsSystemWindows="true"> <android.support.design.widget.CollapsingToolbarLayout android:id="@+id/collapsing_toolbar" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true" app:collapsedTitleTextAppearance="@style/Title.collapsed" app:contentScrim="@color/primary" app:expandedTitleMarginStart="48dp" app:expandedTitleTextAppearance="@style/Title.Expanded" app:layout_scrollFlags="scroll|enterAlways|enterAlwaysCollapsed"> <ImageView android:id="@+id/backdrop" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true" android:scaleType="centerCrop" android:src="@drawable/artistic_4" app:layout_collapseMode="parallax"/> <View android:layout_width="match_parent" android:layout_height="@dimen/height_of_app_bar" android:background="@drawable/gradient"/> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" app:layout_collapseMode="pin"/> </android.support.design.widget.CollapsingToolbarLayout> </android.support.design.widget.AppBarLayout> <android.support.v7.widget.RecyclerView android:id="@+id/simpleList" style="@style/genericRecyclerView" android:layout_width="match_parent" android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior" tools:listitem="@layout/item_discography_album"/> </android.support.design.widget.CoordinatorLayout>

En pocas palabras, android: fitsSystemWindows = "true" solo debe estar en el coordinatorLayout, AppBarLayout y theCollapsingToolbarLayout (que son los que queremos ajustar según la pantalla de Android 5.x), la aplicación: layout_scrollFlags para "desplazar | enterSiempre | enterAlwaysCollapsed" y la barra de herramientas debe tener como altura, la altura de la barra de acción. Finalmente, es mejor mantener el RecyclerView lo más limpio posible para que pueda controlar el espaciado del diseño en cada elemento de línea.


Cree un FrameLayout y coloque el RecycerView en él con match_parent tanto para el ancho como para el alto. Puede dimensionar el diseño del marco como desee.


Esto funcionó para mí. Establezca la altura y el ancho del recyclerView en 0dp

<android.support.v7.widget.RecyclerView android:id="@+id/rv_materias" android:layout_width="0dp" android:layout_height="0dp" android:layout_marginTop="20dp" android:background="@color/secondaryLightColor" app:layout_constraintBottom_toTopOf="@id/bottom_navigation" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/guideline6"></android.support.v7.widget.RecyclerView>


Intente cambiar la altura de RecyclerView a "wrap_content" y agregue la altura de AppBarLayout como margen inferior.

<android.support.v7.widget.RecyclerView android:id="@+id/simpleList" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginBottom="@dimen/height_of_app_bar" app:layout_behavior="@string/appbar_scrolling_view_behavior"/>

La parte de corte del elemento de la lista, es la altura del AppBarLayout .


Tengo un fragmento de diálogo que contiene el RecyclerView. Para mi diseño de restricción global inicial, ninguna de las soluciones anteriores funcionó, así que lo cambié a un diseño lineal, que funciona sin problemas. Este diseño contiene una barra de herramientas y el recyclerview.


Tuve el mismo problema (incluso faltaba un elemento ViewHolder completo de mi lista) mientras utilizaba un RecyclerView dentro de un ConstraintLayout. Como mencionó , poner a cero layout_width y layout_height de RecyclerView fue el truco. Es un poco confuso porque el editor retrocede para decir "match_constraints" después de un rato, mientras que el texto XML dice 0dp. No dejes que te confunda, debería funcionar.


agregue android: layout_gravity = "top" a la vista de reciclador. si esto no funcionó, agregue android: layout_gravity = "fill_verticle"