BottomSheetBehavior tidak ada di perpustakaan androidX


90

Saya menggunakan BottomSheetBehaviordengan pustaka dukungan asli:

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

Ketika saya bermigrasi untuk menggunakan androidxperpustakaan baru meskipun BottomSheetBehaviorhilang. Pemetaan dari pustaka dukungan di atas juga tidak ada dalam Daftar Pemfaktoran Ulang AndroidX , tetapi alat migrasi menghapusnya.

Apa yang saya lewatkan untuk menyertakan BottomSheetBehavior dengan androidxperpustakaan baru .

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'
}

Jawaban:


222

Ternyata alat refactor di Android Studio Refactor > Migrate to AndroidXtidak memigrasikan XML dengan benar untuk BottomSheetBehaviour.

Lokasi lama android.support.design.widget.BottomSheetBehavior, dan tidak diubah oleh alat migrasi. XML aslinya adalah:

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

Lokasi baru adalah com.google.android.material.bottomsheet.BottomSheetBehavior, jadi tata letaknya harus menjadi:

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

7
Saya menghabiskan sepanjang hari untuk yang satu ini. Mudah-mudahan ini menggelegak agar orang lebih mudah menemukan.
Adam Hurwitz

Dalam pembaruan terakhir dari AS masih belum memperbaiki kesalahan ini dalam migrasi AndroidX. Terima kasih
Genaut

Terima kasih banyak
Sardorbek Rkh

52

Anda juga bisa mengganti

    app:layout_behavior="com.google.android.material.bottomsheet.BottomSheetBehavior"
or 
    app:layout_behavior="android.support.design.widget.BottomSheetBehavior"

oleh

app:layout_behavior="@string/bottom_sheet_behavior"

1
Proyek saya, yang dibuat dari template Android Studio, tidak memiliki @string/bottom_sheet_behavior. Saya pikir saya bisa menariknya di dengan menambahkan implementation "com.google.android.material:material:1.1.0-alpha04"ke sayaapp/build.gradle
Michael Osofsky

21

Anda harus mengimpor Perpustakaan Komponen Material yang disediakan oleh Google.

Komponen Material untuk Android adalah pengganti drop-in untuk Pustaka Dukungan Desain Android.

Tambahkan Anda build.gradle:

implementation 'com.google.android.material:material:x.x.x'

Kemudian gunakan kelas com.google.android.material.bottomsheet.BottomSheetBehavior.

Dalam tata letak Anda, Anda dapat menggunakan atribut:

    app:layout_behavior="com.google.android.material.bottomsheet.BottomSheetBehavior"
    ..>

atau

app:layout_behavior="@string/bottom_sheet_behavior"
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.