BottomSheetBehavior not in androidX libraries

陌路散爱 提交于 2019-11-28 17:19:11

问题


I was using the BottomSheetBehavior with the original support library:

implementation 'com.android.support:design:27.1.1' 

When I migrated to use the new androidx libraries though the BottomSheetBehavior is missing. The mapping from the above support library isn't in the AndroidX Refactoring List either, but the migration tool removed it.

What am I missing to include the BottomSheetBehavior with the new androidx libraries.

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.google.android.material:material:1.0.0-beta01'
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"

    // ReactiveX
    implementation 'io.reactivex.rxjava2:rxandroid:2.0.2'
    implementation 'io.reactivex.rxjava2:rxkotlin:2.2.0'

    implementation 'com.android.support:design:28.1.0'

    // Android Compatability Libraries
    // Version: https://developer.android.com/topic/libraries/support-library/refactor
    implementation 'androidx.appcompat:appcompat:1.0.0-beta01'
    implementation 'androidx.constraintlayout:constraintlayout:2.0.0-alpha1'
    implementation 'androidx.legacy:legacy-support-v4:1.0.0-beta01'
    implementation 'androidx.lifecycle:lifecycle-extensions:2.0.0-beta01'
    implementation 'androidx.recyclerview:recyclerview:1.0.0-beta01'

    // Android Navigation Component
    // Check here for updated version info - will move to androidx soon.
    // https://developer.android.com/topic/libraries/architecture/adding-components
    def nav_version = "1.0.0-alpha04"

    // use -ktx for Kotlin
    implementation "android.arch.navigation:navigation-fragment-ktx:$nav_version"
    implementation "android.arch.navigation:navigation-ui-ktx:$nav_version"
    androidTestImplementation "android.arch.navigation:navigation-testing-ktx:$nav_version"

    // Testing
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test:runner:1.1.0-alpha4'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0-alpha4'
}

回答1:


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"
    />



回答2:


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"



回答3:


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"


来源:https://stackoverflow.com/questions/51617186/bottomsheetbehavior-not-in-androidx-libraries

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!