BottomSheetBehavior ไม่ได้อยู่ในไลบรารี androidX


92

ฉันใช้BottomSheetBehaviorกับไลบรารีการสนับสนุนเดิม:

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

เมื่อฉันย้ายไปใช้androidxไลบรารีใหม่แม้ว่าไฟล์BottomSheetBehavior. การแมปจากไลบรารีการสนับสนุนด้านบนไม่ได้อยู่ในรายการอ้างอิง AndroidXแต่เครื่องมือย้ายข้อมูลได้ลบออก

ฉันขาดอะไรไปในการรวม BottomSheetBehavior กับandroidxไลบรารีใหม่

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

คำตอบ:


226

ปรากฎว่าเครื่องมือ refactor ใน Android Studio Refactor > Migrate to AndroidXไม่ได้โยกย้าย XML สำหรับ BottomSheetBehaviour อย่างถูกต้อง

ตำแหน่งเดิมคือ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
ฉันใช้เวลาทั้งวันกับสิ่งนี้ หวังว่าสิ่งนี้จะทำให้ผู้คนค้นพบได้ง่ายขึ้น
Adam Hurwitz

ในการอัปเดตล่าสุดจาก AS ยังไม่ได้แก้ไขข้อผิดพลาดนี้ในการย้ายข้อมูล AndroidX ขอบคุณ
Genaut

ขอบคุณมาก
Sardorbek Rkh

54

คุณยังสามารถแทนที่

    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 @string/bottom_sheet_behaviorสตูดิโอไม่ได้มี ผมคิดว่าผมสามารถที่จะดึงมันในโดยการเพิ่มimplementation "com.google.android.material:material:1.1.0-alpha04"ของฉันapp/build.gradle
ไมเคิล Osofsky

22

คุณต้องนำเข้าไลบรารีส่วนประกอบวัสดุที่ Google จัดหาให้

Material Components สำหรับ Android เป็นส่วนทดแทนแบบดรอปอินสำหรับไลบรารี Design Support ของ 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.