最近、プロジェクトを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>
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オプションのみが必要です。