BottomSheetBehavior not in androidX bibliothèques


90

J'utilisais BottomSheetBehavioravec la bibliothèque de support d'origine:

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

Lorsque j'ai migré pour utiliser les nouvelles androidxbibliothèques bien que le BottomSheetBehaviorfichier. Le mappage de la bibliothèque de support ci-dessus ne figure pas non plus dans la liste de refactorisation AndroidX , mais l'outil de migration l'a supprimé.

Ce qui me manque pour inclure le BottomSheetBehavior avec les nouvelles androidxbibliothèques.

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

Réponses:


222

Il s'avère que l'outil de refactorisation d'Android Studio Refactor > Migrate to AndroidXn'a pas correctement migré le XML pour BottomSheetBehaviour.

L'ancien emplacement a été android.support.design.widget.BottomSheetBehavioret n'a pas été modifié par l'outil de migration. Le XML d'origine était:

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

Le nouvel emplacement est com.google.android.material.bottomsheet.BottomSheetBehavior, donc la mise en page doit devenir:

<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
J'ai passé toute la journée sur celui-ci. J'espère que cela a été mis en place pour que les gens puissent le découvrir plus facilement.
Adam Hurwitz

Dans la dernière mise à jour d'AS toujours pas corrigé cette erreur dans la migration AndroidX. Merci
Genaut

Merci beaucoup
Sardorbek Rkh

52

Vous pouvez également remplacer

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

par

app:layout_behavior="@string/bottom_sheet_behavior"

1
Mon projet, généré à partir d'un modèle Android Studio, n'avait pas @string/bottom_sheet_behavior. Je pense que j'ai pu le tirer en ajoutant implementation "com.google.android.material:material:1.1.0-alpha04"à monapp/build.gradle
Michael Osofsky

21

Vous devez importer la bibliothèque de composants matériels fournie par Google.

Material Components for Android est un remplacement instantané de la bibliothèque de support de conception d'Android.

Ajoutez votre build.gradle:

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

Ensuite, utilisez la classe com.google.android.material.bottomsheet.BottomSheetBehavior.

Dans votre mise en page, vous pouvez utiliser l'attribut:

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

ou

app:layout_behavior="@string/bottom_sheet_behavior"
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.