前提・実現したいこと
Android Javaでの開発未経験者です。
勉強のため、BottomSheetBehaviorの実装を行いたいと思い、参考ブログなどでテスト実装を実施しています。
発生している問題・エラーメッセージ
いくつかのブログを参考に実装しているのですが、どの参考コードでも必ず、以下のエラーとなり動きません
java.lang.IllegalArgumentException: The view is not a child of CoordinatorLayout
上記のエラーはMainActivityの以下の行で発生しているようです。
→ mBottomSheetBehavior = BottomSheetBehavior.from(view);
該当のソースコード
LayoutのXMLに問題があると思うのですが、どこがどのようにボトルネックとなっているのか見当がつかず、質問にいたっております。ご助力いただければ幸いです。
activitymain
1<?xml version="1.0" encoding="utf-8"?> 2<androidx.constraintlayout.widget.ConstraintLayout 3 xmlns:android="http://schemas.android.com/apk/res/android" 4 xmlns:tools="http://schemas.android.com/tools" 5 xmlns:app="http://schemas.android.com/apk/res-auto" 6 android:layout_width="match_parent" 7 android:layout_height="match_parent"> 8 9 <ImageView 10 android:id="@+id/imageView1" 11 android:src="@drawable/sample1" 12 android:layout_width="match_parent" 13 android:layout_height="match_parent" 14 android:scaleType="centerCrop" 15 android:minHeight="200dp" 16 android:text="Hello World!" /> 17 18 <LinearLayout 19 android:id="@+id/bottomSheet1" 20 android:layout_width="match_parent" 21 android:layout_height="200dp" 22 android:background="#E0E0E0" 23 android:padding="16dp" 24 app:behavior_hideable="true" 25 app:behavior_peekHeight="120dp" 26 app:layout_behavior="com.google.android.material.bottomsheet.BottomSheetBehavior" 27 tools:ignore="MissingConstraints"> 28 29 <TextView 30 android:id="@+id/textView1" 31 android:layout_width="match_parent" 32 android:layout_height="match_parent" 33 android:text="San Clemente Beach" 34 android:textSize="32sp" /> 35 </LinearLayout> 36 37 38public class MainActivity extends AppCompatActivity implements View.OnClickListener { 39 40 BottomSheetBehavior mBottomSheetBehavior; 41 42 @Override 43 protected void onCreate(Bundle savedInstanceState) { 44 super.onCreate(savedInstanceState); 45 setContentView(R.layout.activity_main); 46 View view = findViewById(R.id.bottomSheet1); 47 ImageView imageView = (ImageView) findViewById(R.id.imageView1); 48 imageView.setOnClickListener(this); 49 50 mBottomSheetBehavior = BottomSheetBehavior.from(view); 51 } 52 53 @Override 54 public void onClick(View v) { 55 switch(v.getId()){ 56 case R.id.imageView1: 57 if( mBottomSheetBehavior.getState() == BottomSheetBehavior.STATE_EXPANDED ) { 58 mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED); 59 } 60 else { 61 mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_EXPANDED); 62 } 63 break; 64 } 65 } 66}
回答1件
あなたの回答
tips
プレビュー