【发布时间】:2016-07-19 13:47:35
【问题描述】:
我有下一个布局的片段
<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.support.design.widget.TabLayout
android:id="@+id/tabs"
android:layout_width="match_parent"
android:layout_height="54dp"
app:tabGravity="center"
app:tabMode="scrollable"
app:tabSelectedTextColor="@android:color/white"
app:tabTextColor="@color/tab_color"
app:tabIndicatorHeight="3dp"
app:tabTextAppearance="@style/Discover.TextAppearance.Tab"/>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
</FrameLayout>
</LinearLayout>
当我冷启动应用程序时,我会看到正确的 TabLayout,其中包含所有需要的选项卡和 2 个首页进入 viewpager(为 viewpager 设置偏移限制 1)。
在我将 ViewPager 滑动到 3 页后,我什么也看不到。 ViewPager 中似乎缺少片段,但我看到日志和片段工作正常。
如果我将应用程序发送到后台并返回,所有页面都将可见。
如果我删除 tablayout 并删除所有缓存,则此错误不会重复。
初始化代码:
final TabLayout tabs = (TabLayout) view.findById(R.id.tabs);
final ViewPager page = (ViewPager) view.findById(R.id.pager);
final DataAdapter adapter = new DataAdapter(someData);
page.setAdapter(adapter);
tabs.setupWithViewPager(page);
【问题讨论】:
-
使用 coordinatorLayout 作为 root 而不是 LinearLayout
-
@bryanc,我试过了,结果是一样的。
-
如果你有 3 页,为什么要设置偏移限制 1? viewpager 现在只缓存 2 个页面
-
@bryanc,我有超过 3 页。第三页和所有下一页将不可见。我使用限制 1 来减少应用程序中的内存使用。你不会用这个技巧吗?
-
我保留默认设置认为只缓存 3 页似乎您的寻呼机适配器可能会导致这种情况。
标签: android android-design-library android-tablayout