androidX 라이브러리에없는 BottomSheetBehavior


90

BottomSheetBehavior원래 지원 라이브러리와 함께 사용했습니다 .

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

누락 androidx되었지만 새 라이브러리 를 사용하기 위해 마이그레이션했을 때 BottomSheetBehavior. 위 지원 라이브러리의 매핑은 AndroidX 리팩터링 목록 에도 없지만 마이그레이션 도구에서 제거했습니다.

androidx라이브러리에 BottomSheetBehavior를 포함하기 위해 내가 놓친 것은 무엇입니까?

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

답변:


222

Android Studio의 리팩터링 도구 Refactor > Migrate to AndroidX가 BottomSheetBehaviour의 XML을 올바르게 마이그레이션하지 않은 것으로 나타났습니다.

이전 위치는 android.support.design.widget.BottomSheetBehavior이며 마이그레이션 도구에 의해 수정되지 않았습니다. 원래 XML은 다음과 같습니다.

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

새 위치는 com.google.android.material.bottomsheet.BottomSheetBehavior이므로 레이아웃은 다음과 같아야합니다.

<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
나는 이것에 하루 종일을 보냈다. 사람들이 더 쉽게 발견 할 수 있기를 바랍니다.
아담 허 비츠

AS의 마지막 업데이트에서 여전히 AndroidX 마이그레이션에서이 오류가 수정되지 않았습니다. 감사합니다
Genaut 19 년

정말 감사합니다
Sardorbek Rkh

52

당신은 또한 대체 할 수 있습니다

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

으로

app:layout_behavior="@string/bottom_sheet_behavior"

1
Android Studio 템플릿에서 생성 된 내 프로젝트에는 @string/bottom_sheet_behavior. 나는 추가하여 그것을 당길 수 생각 implementation "com.google.android.material:material:1.1.0-alpha04"내에app/build.gradle
마이클 Osofsky

21

Google에서 제공 하는 Material Components Library 를 가져와야합니다 .

Android 용 Material Components는 Android의 디자인 지원 라이브러리를 대체 할 수있는 드롭 인입니다.

추가 build.gradle:

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

그런 다음 클래스를 사용하십시오 com.google.android.material.bottomsheet.BottomSheetBehavior.

레이아웃에서 다음 속성을 사용할 수 있습니다.

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

또는

app:layout_behavior="@string/bottom_sheet_behavior"
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.