RecyclerView coupe le dernier article
J'ai un fragment avec une barre d'outils et un recyclerView à l'intérieur.
Je suis le remplissage de la recyclerView avec des données factices et puis essayer de leur montrer. Pour une raison quelconque, le dernier élément de la recyclerView est d'obtenir le cut-off.
C'est le XML du fragment:
<?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>
Les éléments de la liste sont vraiment 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>
Je suis maintenant à la fin de la liste, mais le dernier élément a toujours l'air de cut-off.
Je suis à l'aide de la dernière version de 2015-09-23 de google bibliothèques, 23.0.1, (c'est à dire com.android.support:recyclerview-v7:23.0.1), et la configuration suivante à la compilation.gradle:
compileSdkVersion 23
buildToolsVersion "23.0.1"
defaultConfig {
minSdkVersion 14
targetSdkVersion 23
versionCode 1
versionName "1.0"
multiDexEnabled true//Enabling multidex support
}
Toute aide serait grandement appréciée depuis que je suis aller écrous à ce problème 🙁
SOLUTION
Ok, après le nettoyage du code à l'essentiel et la suppression de la complexité, j'ai trouvé le problème: il était une combinaison de mauvais indicateurs et manquant ou attributs supplémentaires. Le suivant fonctionne très bien pour les deux Android 4.x et 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 un mot, android:fitsSystemWindows="true" ne doit être à la coordinatorLayout, AppBarLayout et theCollapsingToolbarLayout (qui sont ceux que nous voulons être ajustée en fonction de l'écran sur Android 5.x), l'application:layout_scrollFlags doit être réglé sur "scroll|enterAlways|enterAlwaysCollapsed" et la barre d'outils devrait être de hauteur, la hauteur de l'actionBar. Enfin, il est préférable de garder la RecyclerView aussi propre que possible de sorte que vous pouvez contrôler la mise en espacement entre chaque ligne d'article.
source d'informationauteur Sotiris Falieris
Vous devez vous connecter pour publier un commentaire.
Essayez de changer votre
RecyclerView
hauteur de"wrap_content"
et ajouter leAppBarLayout
hauteur de la marge inférieure.Le cut-off de la partie de l'élément de la liste, est la hauteur de la
AppBarLayout
.Cela a fonctionné pour moi.
Définir à la fois la hauteur et la largeur de la recyclerView à 0dp
ajouter android:layout_gravity="top" pour recycler de vue. si cela ne fonctionne pas ajouter android:layout_gravity="fill_verticle"
Créer un FrameLayout mettre le RecycerView avoir il match_parent pour la largeur et la hauteur. Vous pouvez modifier la taille du cadre de mise en page comme vous le souhaitez.
J'ai eu le même problème (même l'absence de toute une ViewHolder élément de ma liste) tout en utilisant un RecyclerView à l'intérieur d'un ConstraintLayout. Comme Sila Siebert mentionné, réglage layout_width et layout_height de la RecyclerView à zéro a fait le tour. C'est un peu déroutant à cause de l'éditeur revient à dire "match_constraints" après un peu tandis que le XML-dit le texte 0dp. Ne le laissez pas vous confondre, il devrait fonctionner.