2

I am managing RTL contents by implementing setRotationY for recyclerview and viewpagers but it seems that it is creating scroll/swipe issues in only devices with API 28 otherwise it is working perfectly fine. It is working perfectly fine if I remove setRotationY. Has anyone faced this issue? If so, how to solve it?

P.S. : Rotating 360f is not affecting the scroll but rotation 180f does.

Rushi M Thakker
  • 679
  • 2
  • 15
  • 34

4 Answers4

1

I had this issue with ViewPager on API 28 because of ViewPager.setRotatingY(180) so that i can support RTL, I've tried replacing rotation with layoutDirection="locale", but it didn't work. I found a library for supporting RTL ViewPager here's a link https://github.com/duolingo/rtl-viewpager.

Add it to dependencies and just make sure you add layoutDirection="locale" to the 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 is locale friendly so it's automatically will change swipe direction according to the current device locale.

Some helpful links on the implementation of ViewPager2:

Android docs

Sample

Abed
  • 3,999
  • 1
  • 17
  • 28
0

You can also use the layoutDirection in your recyclerview or viewpager like:

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

Or the inflated View. So it will work perfectly.

Aman Gupta - ΔMΔN
  • 2,971
  • 2
  • 19
  • 39
0

Check for the current version of 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

Issue was with this sliding tab strip library I was using. It would work perfectly as per other answers, we just have to add layoutDirection attribute to viewpager.

Rushi M Thakker
  • 679
  • 2
  • 15
  • 34