voici ma mise en page XML avec le nom songlist:
<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">
<LinearLayout
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:orientation="vertical">
<LinearLayout
Android:id="@+id/viewA"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:layout_weight="0.6"
Android:background="@Android:color/holo_purple"
Android:orientation="horizontal"/>
<Android.support.v4.widget.NestedScrollView
Android:id="@+id/bottom_sheet"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:background="@Android:color/holo_blue_bright"
app:layout_behavior="Android.support.design.widget.BottomSheetBehavior"
>
<LinearLayout
Android:layout_width="match_parent"
Android:layout_height="match_parent">
<ListView
Android:id="@+id/list"
Android:layout_width="match_parent"
Android:layout_height="308dp"
/>
</LinearLayout>
</Android.support.v4.widget.NestedScrollView>
</LinearLayout>
<Android.support.design.widget.FloatingActionButton
Android:id="@+id/fab"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_margin="16dp"
Android:clickable="true"
Android:src="@drawable/personlog"
app:layout_anchor="@id/viewA"
app:layout_anchorGravity="bottom|center"/>
</Android.support.design.widget.CoordinatorLayout>
et voici mon fragment qui contient cette mise en page:
public class SongList extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.songlist,container,false);
textView=(TextView)view.findViewById(R.id.txt);
View bottomSheet = view.findViewById(R.id.bottom_sheet);
BottomSheetBehavior bottomSheetBehavior = BottomSheetBehavior.from(bottomSheet);
bottomSheetBehavior.setPeekHeight(200);
return view;}
}
mais quand déjeuner l'application me donne cette erreur:
Java.lang.IllegalArgumentException: The view is not a child of CoordinatorLayout
de cette ligne:
BottomSheetBehavior bottomSheetBehavior = BottomSheetBehavior.from(bottomSheet);
comment peut résoudre ce problème? semble que tout fonctionne bien, mais donnez cette erreur ... si quelqu'un peut s'il vous plaît aider
Le BottomSheetBehavior
is
Un plugin de comportement d'interaction pour une vue enfant de Coordinator Layout afin de le faire fonctionner comme une feuille de fond.
Pour le moment, votre feuille de fond NestedScrollView
est un enfant de LinearLayout
. Il suffit donc de supprimer complètement la variable LinearLayout
la plus externe.
<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">
<LinearLayout
Android:id="@+id/viewA"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:layout_weight="0.6"
Android:background="@Android:color/holo_purple"
Android:orientation="horizontal"/>
<Android.support.v4.widget.NestedScrollView
Android:id="@+id/bottom_sheet"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:background="@Android:color/holo_blue_bright"
app:layout_behavior="Android.support.design.widget.BottomSheetBehavior">
<LinearLayout
Android:layout_width="match_parent"
Android:layout_height="match_parent">
<ListView
Android:id="@+id/list"
Android:layout_width="match_parent"
Android:layout_height="308dp" />
</LinearLayout>
</Android.support.v4.widget.NestedScrollView>
<Android.support.design.widget.FloatingActionButton
Android:id="@+id/fab"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_margin="16dp"
Android:clickable="true"
Android:src="@drawable/personlog"
app:layout_anchor="@id/viewA"
app:layout_anchorGravity="bottom|center" />
</Android.support.design.widget.CoordinatorLayout>
Mais vous avez maintenant quelques problèmes avec le fond que vous essayez de mettre en place. Premièrement, vous ne devez pas utiliser wrap_content
avec une vue de défilement. Deuxièmement, vous ne devriez pas utiliser une vue de liste dans une vue de défilement, car elle implémente son propre défilement. Vous pourrez peut-être simplifier cela en utilisant uniquement la vue liste comme feuille de fond.
Dans mon cas au lieu de
<?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"
>
J'ai utilisé <Android.support.constraint.ConstraintLayout
(dans un fragment ou une activité contenant une mise en page et une feuille de fond).