2
votes

setRotationY (180) sur recyclerview ou viewpager créant un problème de défilement dans Android 9 (API 28)

Je gère le contenu RTL en implémentant setRotationY pour recyclerview et viewpagers, mais il semble que cela crée des problèmes de défilement / balayage uniquement dans les appareils avec l'API 28, sinon cela fonctionne parfaitement. Cela fonctionne parfaitement bien si je supprime setRotationY. Quelqu'un at-il été confronté à ce problème? Si oui, comment le résoudre?

P.S. : La rotation de 360f n'affecte pas le défilement, contrairement à la rotation de 180f.


0 commentaires

4 Réponses :


0
votes

Vous pouvez également utiliser la fonction layoutDirection dans votre recyclerview ou viewpager comme:

 <android.support.v4.view.ViewPager
        android:id="@+id/view_pager"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layoutDirection="locale"/>

Ou la vue gonflée. Cela fonctionnera donc parfaitement.


0 commentaires

0
votes

Vérifiez la version actuelle du SDK:

  if(Build.VERSION.SDK_INT >= 28) {
        // Call some material design APIs here

        recyclerView.setLayoutDirection(View.LAYOUT_DIRECTION_LOCALE);

    } else {
        // Implement this feature without material design
        recyclerView.setRotationY(180);


    }


0 commentaires

0
votes

Le problème concernait cette bibliothèque de bandes à onglets coulissants que j'utilisais. Cela fonctionnerait parfaitement comme pour les autres réponses, il suffit d'ajouter l'attribut layoutDirection à viewpager.


0 commentaires

1
votes

J'ai eu ce problème avec ViewPager sur l'API 28 à cause de ViewPager.setRotatingY (180) afin que je puisse prendre en charge RTL, j'ai essayé de remplacer la rotation par layoutDirection = "locale", mais cela n'a pas fonctionné. J'ai trouvé une bibliothèque pour prendre en charge RTL ViewPager, voici un lien https://github.com/duolingo/rtl-viewpager .

Ajoutez-le aux dépendances et assurez-vous simplement d'ajouter layoutDirection = "locale" au RtlViewPager

<com.duolingo.open.rtlviewpager.RtlViewPager
        android:layoutDirection="locale"
        android:keepScreenOn="true"
        android:id="@+id/quranViewpager"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:animateLayoutChanges="true"
     />

Update

ViewPager2 est compatible avec les paramètres régionaux, il changera donc automatiquement la direction du balayage en fonction des paramètres régionaux actuels de l'appareil.

Quelques liens utiles sur l'implémentation de ViewPager2:

Documentation Android

Exemple


0 commentaires