Donc, je mets à jour mon projet en utilisant les bibliothèques de support Android pour utiliser AndroidX. J'ai suivi la miroir documentation et j'ai changé chaque bibliothèque de support pour son alternative sur AndroidX.
Tout fonctionne parfaitement, sauf une chose, j'ai un écran qui est essentiellement un AppBarLayout, qui contient une barre d'outils et un TabLayout, ci-dessous j'ai un ViewPager qui contient deux fragments, un pour chaque onglet, les fragments en interne affichent simplement une liste d'articles. L'idée est que si je fais défiler vers le bas l'un des deux fragments de l'onglet, la barre d'outils devrait s'effondrer. Cela fonctionnait parfaitement juste avant ma mise à jour vers AndroidX.
Des idées sur la façon de résoudre ce problème et de continuer à utiliser la bibliothèque AndroidX? Je veux vraiment m'en tenir à la bibliothèque AndroidX, mais je ne peux pas l'utiliser, si cela ne fonctionne pas.
Voici mon avant et après mes fichiers gradle/xml:
AVANT ANDROIDX XML:
<?xml version="1.0" encoding="utf-8"?>
<Android.support.design.widget.CoordinatorLayout
xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:app="http://schemas.Android.com/apk/res-auto"
Android:id="@+id/fragmentPetsTabMainContainer"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:fitsSystemWindows="true">
<Android.support.design.widget.AppBarLayout
Android:id="@+id/fragmentPetsTabAppBar"
Android:layout_width="match_parent"
Android:layout_height="wrap_content">
<Android.support.v7.widget.Toolbar
Android:id="@+id/fragmentPetsToolbar"
app:title="@string/menu_transactions"
app:titleTextColor="@color/white"
Android:layout_width="match_parent"
Android:layout_height="?attr/actionBarSize"
Android:background="?attr/colorPrimary"
app:contentInsetStartWithNavigation="0dp"
app:layout_scrollFlags="scroll|enterAlways"/>
<Android.support.design.widget.TabLayout
Android:id="@+id/fragmentPetsTabLayout"
style="@style/CustomTabLayout"
Android:layout_width="match_parent"
Android:layout_height="?attr/actionBarSize"
Android:layout_gravity="left"
Android:background="?attr/colorPrimary"
app:tabGravity="fill"
app:tabMode="fixed">
<Android.support.design.widget.TabItem
Android:id="@+id/fragmentPetsTabOpen"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:text="@string/fragment_transaction_open_tab"/>
<Android.support.design.widget.TabItem
Android:id="@+id/fragmentPetsTabClosed"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:text="@string/fragment_transaction_closed_tab"/>
</Android.support.design.widget.TabLayout>
</Android.support.design.widget.AppBarLayout>
<Android.support.v4.view.ViewPager
Android:id="@+id/fragmentPetsTabViewPager"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"/>
</Android.support.design.widget.CoordinatorLayout>
APRÈS ANDROIDX XML:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:app="http://schemas.Android.com/apk/res-auto"
Android:id="@+id/fragmentPetsTabMainContainer"
Android:layout_width="match_parent"
Android:layout_height="match_parent">
<com.google.Android.material.appbar.AppBarLayout
Android:id="@+id/fragmentPetsTabAppBar"
Android:layout_width="match_parent"
Android:fitsSystemWindows="true"
Android:layout_height="wrap_content">
<androidx.appcompat.widget.Toolbar
Android:id="@+id/fragmentPetsToolbar"
app:title="@string/menu_transactions"
app:titleTextColor="@color/white"
Android:layout_width="match_parent"
Android:layout_height="?attr/actionBarSize"
Android:background="?attr/colorPrimary"
app:contentInsetStartWithNavigation="0dp"
app:layout_scrollFlags="scroll|enterAlways"/>
<com.google.Android.material.tabs.TabLayout
Android:id="@+id/fragmentPestTabLayout"
Android:layout_width="match_parent"
Android:layout_height="?attr/actionBarSize"
Android:layout_gravity="left"
Android:background="?attr/colorPrimary"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
app:layout_scrollFlags="enterAlways"
app:tabGravity="fill"
app:tabMode="fixed">
<com.google.Android.material.tabs.TabItem
Android:id="@+id/fragmentPetsTabOpen"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:text="@string/fragment_transaction_open_tab"/>
<com.google.Android.material.tabs.TabItem
Android:id="@+id/fragmentPetsTabClosed"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:text="@string/fragment_transaction_closed_tab"/>
</com.google.Android.material.tabs.TabLayout>
</com.google.Android.material.appbar.AppBarLayout>
<androidx.viewpager.widget.ViewPager
Android:id="@+id/fragmentPetsTabViewPager"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
app:layout_behavior="@string/appbar_scrolling_view_behavior"/>
</androidx.constraintlayout.widget.ConstraintLayout>
AVANT LES DÉPENDANCES D'ANDROIDX:
...
//region Support dependencies
supportRecyclerView : "com.Android.support:recyclerview-v7:$versions.googleSupportVersion",
supportAppCompatV7 : "com.Android.support:appcompat-v7:$versions.googleSupportVersion",
supportV13 : "com.Android.support:support-v13:$versions.googleSupportVersion",
supportDesign : "com.Android.support:design:$versions.googleSupportVersion",
supportCardViewV7 : "com.Android.support:cardview-v7:$versions.googleSupportVersion",
supportContraintLayout : 'com.Android.support.constraint:constraint-layout:1.1.1',
//endregion
...
....
implementation libraries.kotlin, libraries.supportAppCompatV7, libraries.glide,
libraries.daggerAndroidSupport, libraries.supportRecyclerView, libraries.supportV13,
libraries.supportDesign, libraries.supportCardViewV7, libraries.supportContraintLayout,
libraries.rxJava2, libraries.rxJava2Kotlin, libraries.rxJavaAndroid,
libraries.supportAppCompatV7
...
APRÈS LES DÉPENDANCES D'ANDROIDX
...
androidXRecyclerView : "androidx.recyclerview:recyclerview:$versions.androidXVersion",
androidXAppCompat : "androidx.appcompat:appcompat:$versions.androidXVersion",
androidXV4 : "androidx.legacy:legacy-support-v4:$versions.androidXVersion",
androidXV13 : "androidx.legacy:legacy-support-v13:$versions.androidXVersion",
androidXDesign : "com.google.Android.material:material:$versions.androidXVersion",
androidXCardView : "androidx.cardview:cardview:$versions.androidXVersion",
androidXConstraintLayout : "androidx.constraintlayout:constraintlayout:1.1.2",
...
implementation libraries.androidXAppCompat, libraries.androidXRecyclerView,
libraries.androidXV13, libraries.androidXDesign, libraries.androidXCardView,
libraries.androidXConstraintLayout
...
androidXVersion est 1.0.0 et googleSupportVersion est 28.0.0
Ce que j'ai essayé jusqu'à présent :
Mise à jour de toutes les dépendances AndroidX vers la dernière version.
Modification des activités d'AppActivityCompat à simplement Activity ou FragmentActivity.
Googlé, beaucoup.
J'ai vu qu'il y a des problèmes avec le comportement de défilement, celui-ci en particulier me fait penser que c'est un bug, mais je ne suis pas sûr à 100%. J'ai déjà essayé la solution.
A également essayé this
Tout conseil est apprécié.
Vous avez utilisé CoordinatorLayout
avant AndroidX
les dépendances qui allaient bien depuis que vous avez ajouté:
app:layout_scrollFlags="scroll|enterAlways"
Pour le Toolbar
et après, vous avez utilisé androidx.constraintlayout.widget.ConstraintLayout
qui est pas le même et certains comportements comme l'effondrement ou etc. peuvent ne pas fonctionner avec ConstraintLayout
.
tilisez:androidx.coordinatorlayout.widget.CoordinatorLayout
au lieu de androidx.constraintlayout.widget.ConstraintLayout
à la racine de la mise en page:
<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout>
<com.google.Android.material.appbar.AppBarLayout>
<androidx.appcompat.widget.Toolbar>
<com.google.Android.material.tabs.TabLayout>
...
..
.