BottomSheetBehavior not in androidX libraries
It turns out that the refactor tool in Android Studio Refactor > Migrate to AndroidX
didn't correctly migrate the XML for the BottomSheetBehaviour.
The old location was android.support.design.widget.BottomSheetBehavior
, and was not modified by the migration tool. The original XML was:
<fragment
android:id="@+id/player_bottom_sheet_fragment"
android:name="app.rxsongbrowsertrials.ui.player.PlayerToggleFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:behavior_hideable="false"
app:behavior_peekHeight="56dp"
app:layout_behavior="android.support.design.widget.BottomSheetBehavior"
/>
The new location is com.google.android.material.bottomsheet.BottomSheetBehavior
, so the layout needs to become:
<fragment
android:id="@+id/player_bottom_sheet_fragment"
android:name="app.rxsongbrowsertrials.ui.player.PlayerToggleFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:behavior_hideable="false"
app:behavior_peekHeight="56dp"
app:layout_behavior="com.google.android.material.bottomsheet.BottomSheetBehavior"
/>
You could also replace
app:layout_behavior="com.google.android.material.bottomsheet.BottomSheetBehavior"
or
app:layout_behavior="android.support.design.widget.BottomSheetBehavior"
by
app:layout_behavior="@string/bottom_sheet_behavior"
You have to import the Material Components Library provided by Google.
Material Components for Android is a drop-in replacement for Android's Design Support Library.
Add in your build.gradle
:
implementation 'com.google.android.material:material:x.x.x'
Then use the class com.google.android.material.bottomsheet.BottomSheetBehavior
.
In your layout you can use the attribute:
app:layout_behavior="com.google.android.material.bottomsheet.BottomSheetBehavior"
..>
or
app:layout_behavior="@string/bottom_sheet_behavior"
I got this error message:
Didn't find class "com.google.android.material.bottomsheet.BottomSheetBehaviour"
The only way to solve this was to change the XML:
Change:
app:layout_behavior="com.google.android.material.bottomsheet.BottomSheetBehavior"
Change to:
app:layout_behavior="@string/bottom_sheet_behavior"
This solved the problem