android viewpager2 RTL不支持清单Rtl =false

4zcjmb1e  于 2023-01-24  发布在  Android
关注(0)|答案(2)|浏览(183)

有没有办法强制ViewPager2 RTL方向?我已经将android:layoutDirection="rtl"设置为viewPager2,但由于清单中的android:supportsRtl="false",它仍然是LTR。我该如何解决这个问题?

ovfsdjhp

ovfsdjhp1#

我没有找到一个官方的解决方案,所以我首先旋转翻页:

viewPager2.rotationY = (180).toFloat()

并覆盖FragmentStateAdapter中的onBindViewHolder(),如下所示:

override fun onBindViewHolder(
        holder: FragmentViewHolder,
        position: Int,
        payloads: MutableList<Any>
    ) {
        super.onBindViewHolder(holder, position, payloads)
        holder.itemView.rotationY = 180.toFloat()
    }

那是我的工作

ix0qys7i

ix0qys7i2#

设置supportsRtl=真并添加

<item name="android:layoutDirection">ltr</item>

在您应用主题中,将LTR方向设置为全局(与android:supportsRtl=“false”相同)并定义样式,如下所示:

<style name="AppTheme.RTL" parent="AppTheme">
    <item name="android:layoutDirection">rtl</item>
</style>

并将此样式设置为viewpager或其他要RTL的视图的主题。请确保使用android:theme而不是style

<androidx.viewpager2.widget.ViewPager2
            android:id="@+id/viewPager"
            android:layout_width="match_parent"
            android:theme="@style/AppTheme.Dark.RTL"
            android:layout_height="match_parent"
            android:background="#1F1F1F"
            android:saveEnabled="false" />

相关问题