BottomSheetBehavior không có trong thư viện androidX


89

Tôi đang sử dụng BottomSheetBehaviorvới thư viện hỗ trợ ban đầu:

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

Khi tôi chuyển sang sử dụng các androidxthư viện mới mặc dù BottomSheetBehaviorbị thiếu. Ánh xạ từ thư viện hỗ trợ ở trên cũng không có trong Danh sách tái cấu trúc AndroidX , nhưng công cụ di chuyển đã xóa nó.

Tôi còn thiếu gì để bao gồm BottomSheetBehavior với các androidxthư viện mới .

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

Câu trả lời:


222

Hóa ra là công cụ tái cấu trúc trong Android Studio Refactor > Migrate to AndroidXđã không di chuyển chính xác XML cho BottomSheetBehaviour.

Vị trí cũ là android.support.design.widget.BottomSheetBehaviorvà không được sửa đổi bởi công cụ di chuyển. XML ban đầu là:

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

Vị trí mới com.google.android.material.bottomsheet.BottomSheetBehavior, vì vậy bố cục cần trở thành:

<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
Tôi đã dành cả ngày cho cái này. Hy vọng rằng điều này nổi lên để mọi người khám phá dễ dàng hơn.
Adam Hurwitz

Trong bản cập nhật cuối cùng từ AS vẫn không sửa được lỗi này trong quá trình di chuyển AndroidX. Cảm ơn
Genaut

Cảm ơn bạn rất nhiều
Sardorbek Rkh

52

Bạn cũng có thể thay thế

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

bởi

app:layout_behavior="@string/bottom_sheet_behavior"

1
Dự án của tôi, được tạo từ mẫu Android Studio, không có @string/bottom_sheet_behavior. Tôi nghĩ rằng tôi đã có thể kéo nó vào bằng cách thêm implementation "com.google.android.material:material:1.1.0-alpha04"vào của tôiapp/build.gradle
Michael Osofsky

21

Bạn phải nhập Thư viện thành phần vật liệu do Google cung cấp.

Material Components cho Android là phần mềm thay thế cho Thư viện hỗ trợ thiết kế của Android.

Thêm vào của bạn build.gradle:

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

Sau đó sử dụng lớp học com.google.android.material.bottomsheet.BottomSheetBehavior.

Trong bố cục của mình, bạn có thể sử dụng thuộc tính:

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

hoặc là

app:layout_behavior="@string/bottom_sheet_behavior"
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.