BottomSheetBehavior nicht in AndroidX-Bibliotheken

Lesezeit: 3 Minuten

Benutzer-Avatar
Jim Leck

Ich benutzte die BottomSheetBehavior mit der ursprünglichen Support-Bibliothek:

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

Als ich migrierte, um das neue zu verwenden androidx Bibliotheken obwohl die BottomSheetBehavior wird vermisst. Die Zuordnung aus der obigen Support-Bibliothek ist nicht in der AndroidX-Refactoring-Liste entweder, aber das Migrationstool hat es entfernt.

Was fehlt mir, um das BottomSheetBehavior mit dem neuen aufzunehmen androidx Bibliotheken.

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

Es stellt sich heraus, dass das Refactor-Tool in Android Studio Refactor > Migrate to AndroidX hat das XML für das BottomSheetBehaviour nicht richtig migriert.

Der alte Standort war android.support.design.widget.BottomSheetBehavior, und wurde nicht vom Migrationstool geändert. Das ursprüngliche XML war:

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

Der neue Standort ist com.google.android.material.bottomsheet.BottomSheetBehavioralso muss das Layout werden:

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

  • Ich habe den ganzen Tag damit verbracht. Hoffentlich sprudelte dies hoch, damit die Leute es leichter entdecken konnten.

    – Adam Hurwitz

    28. Oktober 2018 um 6:56 Uhr

  • Im letzten Update von AS wurde dieser Fehler bei der AndroidX-Migration noch nicht behoben. Vielen Dank

    – Genaut

    6. September 2019 um 17:20 Uhr

Könntest du auch ersetzen

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

durch

app:layout_behavior="@string/bottom_sheet_behavior"

  • Mein Projekt, das aus einer Android Studio-Vorlage generiert wurde, hatte keine @string/bottom_sheet_behavior. Ich glaube, ich konnte es durch Hinzufügen hineinziehen implementation "com.google.android.material:material:1.1.0-alpha04" zu meinem app/build.gradle

    – Michael Osofsky

    21. März 2019 um 19:11 Uhr


Benutzer-Avatar
Gabriele Marotti

Die musst du importieren Materialkomponentenbibliothek bereitgestellt von Google.

Material Components für Android ist ein direkter Ersatz für die Design Support Library von Android.

Fügen Sie Ihre hinzu build.gradle:

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

Dann benutze die Klasse com.google.android.material.bottomsheet.BottomSheetBehavior.

In Ihrem Layout können Sie das Attribut verwenden:

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

oder

app:layout_behavior="@string/bottom_sheet_behavior"

Ich habe diese Fehlermeldung bekommen:

Didn't find class "com.google.android.material.bottomsheet.BottomSheetBehaviour"

Die einzige Möglichkeit, dies zu lösen, bestand darin, das XML zu ändern:

Change:

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

Change to:

app:layout_behavior="@string/bottom_sheet_behavior"

Dies löste das Problem

Für R-Klasse

com.google.android.material.R.id.design_bottom_sheet

Anstatt von

android.support.design.R.id.design_bottom_sheet

1313400cookie-checkBottomSheetBehavior nicht in AndroidX-Bibliotheken

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy