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 othe
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
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.
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);
}
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.