J'ai un RecyclerView qui affiche un contenu dynamique. Je voudrais afficher ce RecyclerView entre d'autres vues. Par exemple, une vue affichée ci-dessus et une vue affichée sous la vue RecyclerView:
View
RecyclerView
View
Cependant, tout ce que j'essaie ne semble pas fonctionner et le RecyclerView semble occuper tout l'espace. Je crois que le problème réside dans le problème wrap_content , même si j'ai essayé quelques solutions suggérées, telles que ce Custom LinearLayoutManager , mais cela ne semble pas résoudre mon problème.
Tentative:
<?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:fitsSystemWindows="true">
<LinearLayout
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:orientation="vertical">
<!-- AppBar works fine; no issue here -->
<Android.support.design.widget.AppBarLayout
Android:layout_height="wrap_content"
Android:layout_width="match_parent"
Android:id="@+id/app_bar_layout">
<Android.support.v7.widget.Toolbar
Android:id="@+id/toolbar"
Android:layout_height="?attr/actionBarSize"
Android:layout_width="match_parent"
app:layout_collapseMode="pin"/>
</Android.support.design.widget.AppBarLayout>
<!-- Not displaying; Tried different views -->
<com.chrynan.taginput.view.TextInputWrapper
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:id="@+id/edit_text_container">
<AutoCompleteTextView
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:id="@+id/edit_text"/>
</com.chrynan.taginput.view.TextInputWrapper>
<!-- Takes up entire screen space -->
<Android.support.v4.widget.SwipeRefreshLayout
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:id="@+id/swipe_refresh">
<Android.support.v7.widget.RecyclerView
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:id="@+id/recycler_view"/>
</Android.support.v4.widget.SwipeRefreshLayout>
<!-- Not displaying -->
<TextView
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:id="@+id/text_view"/>
</LinearLayout>
</Android.support.design.widget.CoordinatorLayout>
Question: Y a-t-il un moyen de placer et d'afficher une vue ci-dessus et une vue ci-dessous une vue RecyclerView? Si c'est le cas, comment? Ou est-il préférable d'utiliser un ListView?
Qu'en est-il de l'utilisation de weight
?
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:Android="http://..."
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:orientation="vertical"
>
<View
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
/>
<RecyclerView
Android:layout_width="match_parent"
Android:layout_height="0dp"
Android:layout_weight="1"
/>
<View
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
/>
</LinearLayout>
Ce n'est peut-être pas votre solution habituelle, mais vous pouvez néanmoins l'essayer.
Que diriez-vous d’utiliser un RelativeLayout au lieu de LinearLayout, et de régler simplement les marges inférieure et supérieure de votre SwipeRefreshLayout à la hauteur de vos vues comme suit.
<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:fitsSystemWindows="true">
<RelativeLayout
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:orientation="vertical">
<!-- your app bar -->
<!-- Not displaying; Tried different views -->
<com.chrynan.taginput.view.TextInputWrapper
Android:layout_width="match_parent"
Android:layout_height="150dp"
Android:layout_alignParentTop="true"
Android:id="@+id/edit_text_container"/>
<!-- Takes up entire screen space -->
<Android.support.v4.widget.SwipeRefreshLayout
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:paddingTop="150dp"
Android:paddingBottom="250dp"
Android:id="@+id/swipe_refresh">
<Android.support.v7.widget.RecyclerView
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:id="@+id/recycler_view"/>
</Android.support.v4.widget.SwipeRefreshLayout>
<!-- bottom view -->
<TextView
Android:layout_alignParentBottom="true"
Android:layout_width="match_parent"
Android:layout_height="250dp"
Android:id="@+id/text_view"/>
</RelativeLayout>
utilisez l'en-tête et le pied de page pour RecyclerView, utilisez le type de vue dans l'adaptateur Recyclerview et ajoutez une vue d'en-tête et de pied de page. . voir ce lien pour plus d'informations https://stackoverflow.com/questions/26245139/how-to-create-recyclerview-with-multiple-view-type?rq=1