web-dev-qa-db-ja.com

移行されたプロジェクトでのandroidxappbarlayoutの問題

最近、プロジェクトをandroidxにリファクタリングしました。しかし、今では致命的な例外があります。プロジェクトを実行すると、coordinatorlayoutとappbarLayoutでエラーが発生し、androidxと互換性がありません。 AppBarLayoutの代わりにandroidxを使用する必要があると思いますが、それを検索したところ、代替手段が見つかりませんでした。

Android.view.InflateException: Binary XML file line #36: Could not inflate Behavior subclass Android.support.design.widget.AppBarLayout$ScrollingViewBehavior
Caused by: Java.lang.RuntimeException: Could not inflate Behavior subclass Android.support.design.widget.AppBarLayout$ScrollingViewBehavior

これは私のxmlコードです:

<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:tools="http://schemas.Android.com/tools"
xmlns:app="http://schemas.Android.com/apk/res-auto"
Android:fitsSystemWindows="true"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
app:layout_behavior="com.google.Android.material.appbar.AppBarLayout$ScrollingViewBehavior">


<com.google.Android.material.appbar.AppBarLayout
    Android:id="@+id/appbar"
    Android:fitsSystemWindows="true"
    Android:layout_height="wrap_content"
    Android:layout_width="match_parent">

    <com.google.Android.material.appbar.CollapsingToolbarLayout
        Android:layout_width="match_parent"
        Android:layout_height="match_parent"
        app:toolbarId="@+id/toolbar"
        app:layout_scrollFlags="scroll|exitUntilCollapsed"
        app:layout_scrollInterpolator="@Android:anim/decelerate_interpolator"
        app:contentScrim="?attr/colorPrimary">

        <androidx.recyclerview.widget.RecyclerView
            Android:id="@+id/allAdsMain_recyclerView_mainCategories"
            Android:layout_width="match_parent"
            Android:layout_height="match_parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent" />

    </com.google.Android.material.appbar.CollapsingToolbarLayout>
</com.google.Android.material.appbar.AppBarLayout>

<androidx.core.widget.NestedScrollView
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    app:layout_behavior="Android.support.design.widget.AppBarLayout$ScrollingViewBehavior">

    <androidx.constraintlayout.widget.ConstraintLayout
        Android:id="@+id/frameLayout"
        Android:layout_width="match_parent"
        Android:layout_height="match_parent"
        tools:context=".all_ad_main" >

        <androidx.recyclerview.widget.RecyclerView
            Android:id="@+id/allAdsMain_recyclerView_ads"
            Android:layout_width="match_parent"
            Android:layout_height="wrap_content"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent" />

    </androidx.constraintlayout.widget.ConstraintLayout>
</androidx.core.widget.NestedScrollView>

<Button
    Android:id="@+id/allAdsMain_button_adRegister"
    Android:layout_width="140dp"
    Android:layout_height="wrap_content"
    Android:layout_gravity="bottom|center"
    Android:layout_marginBottom="5dp"
    Android:background="@drawable/roundshapebtn"
    Android:text="@string/call_for_price"
    Android:textColor="@color/white"
    Android:textDirection="rtl"
    Android:textSize="24sp"
    app:layout_behavior="@string/hide_bottom_view_on_scroll_behavior"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>
3
Ali Shekari

NestedScrollViewの下でサポートライブラリの依存関係を参照しています。

変化する:

app:layout_behavior="Android.support.design.widget.AppBarLayout$ScrollingViewBehavior"

app:layout_behavior="com.google.Android.material.appbar.AppBarLayout$ScrollingViewBehavior"

すでにCoordinatorLayoutで使用しています。次回このタイプの問題が発生したときは、Android Studio)で完了したコードを使用して(この場合は)AppBarLayoutを作成し、バージョンのパッケージを確認できます。 Android Studioはインポートを希望しています。依存関係が正しく設定されている場合は、androidxオプションのみが必要です。

9
Dan 0