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"