【问题标题】:Android TabLayout prevent activation of tabs adjacent to selectedAndroid TabLayout 阻止激活与选定选项相邻的选项卡
【发布时间】:2018-07-12 00:54:40
【问题描述】:

我有一个基于标签的应用程序。我正在为我的选项卡使用 TabLayout,并使用 FragmentStatePagerAdapter 的子类来实例化所选选项卡的片段。我已禁用标签之间的滑动。我仍然看到为与所选选项卡相邻的选项卡创建片段的回调。换句话说,如果索引 0 处的选项卡被激活,我还会看到针对索引 1 处的选项卡的 GetItem 回调。

我想禁用该行为。换句话说,它应该只为活动选项卡请求一个片段。这可能吗?

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/root">
    <android.support.design.widget.TabLayout
        android:id="@+id/tabs"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:tabPaddingStart="0dp"
        app:tabPaddingEnd="0dp"
        app:tabPaddingTop="0dp"
        app:tabMode="fixed"
        app:tabGravity="fill" />
    <jockusch.calculator.droid.AndroidViewPager
        android:id="@+id/viewPager"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
</LinearLayout>

【问题讨论】:

    标签: android xamarin.android android-tablayout


    【解决方案1】:

    发生这种情况的原因是您使用了 ViewPager。

    默认情况下,ViewPager 会自动创建相邻的 Fragments,因为这允许用户在他们想要的任何时候滑动到它们。仅在它们准备好滑动时创建它们可能会导致延迟或一些不愉快的视觉效果。

    ViewPager 有一个名为setOffscreenPageLimit(int limit) 的方法,它可以限制它保留在内存中的相邻数量,但是我相信由于 ViewPager 的固有行为,不可能将其减少到 0。

    如果您已经禁用了在选项卡之间滑动,那么听起来您想要的不是 ViewPager。考虑只使用 FragmentTransactions 来替换活动的 Fragment。

    【讨论】:

      【解决方案2】:
      viewPager.setOffscreenPageLimit(0)
      

      是您正在寻找的。 但是 ViewPager 不允许屏幕外限制小于 1。

      source

      使用 viewPager 以外的东西来获得您想要的效果。不使用 viewPager 的一种方法是使用 frameLayout 并膨胀一个新片段并在选择选项卡时销毁前一个片段。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-09-28
        • 2015-08-28
        • 2015-11-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-03-08
        相关资源
        最近更新 更多