BottomSheetBehavior não está nas bibliotecas androidX


92

Eu estava usando o BottomSheetBehaviorcom a biblioteca de suporte original:

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

Quando migrei para usar as novas androidxbibliotecas, embora o BottomSheetBehavioresteja faltando. O mapeamento da biblioteca de suporte acima também não está na lista de refatoração do AndroidX , mas a ferramenta de migração o removeu.

O que estou perdendo para incluir o BottomSheetBehavior com as novas androidxbibliotecas.

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

Respostas:


226

Acontece que a ferramenta de refatoração no Android Studio Refactor > Migrate to AndroidXnão migrou corretamente o XML para BottomSheetBehaviour.

O local antigo foi android.support.design.widget.BottomSheetBehaviore não foi modificado pela ferramenta de migração. O XML original era:

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

O novo local é com.google.android.material.bottomsheet.BottomSheetBehavior, portanto, o layout precisa ser:

<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
Passei o dia todo nisso. Esperançosamente, isso borbulhou para as pessoas descobrirem mais facilmente.
Adam Hurwitz,

Na última atualização do AS ainda não foi corrigido esse erro na migração do AndroidX. Obrigado
Genaut

Muito obrigado
Sardorbek Rkh

54

Você também pode substituir

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

de

app:layout_behavior="@string/bottom_sheet_behavior"

1
Meu projeto, gerado a partir de um modelo do Android Studio, não tinha @string/bottom_sheet_behavior. Acho que fui capaz de puxá-lo adicionando implementation "com.google.android.material:material:1.1.0-alpha04"ao meuapp/build.gradle
Michael Osofsky

22

Você deve importar a Biblioteca de componentes de materiais fornecida pelo Google.

Componentes de material para Android é um substituto imediato para a Design Support Library do Android.

Adicione o seu build.gradle:

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

Então use a classe com.google.android.material.bottomsheet.BottomSheetBehavior.

Em seu layout, você pode usar o atributo:

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

ou

app:layout_behavior="@string/bottom_sheet_behavior"
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.