【发布时间】:2019-09-23 07:32:35
【问题描述】:
我正在尝试使用 TabLayout 与 ViewPager 连接来创建三个可滑动的片段。但是,我遇到了一个问题:我希望 TabLayout 位于屏幕底部,但 ViewPager 却强制它位于顶部。
TabLayout 曾经位于 android.support.design.widget 库中。然而,自从引入了 androidx 以来,这个库已经发生了变化。新库是 com.google.android.material.tabs.TabLayout。
以前的(和过时的)帖子(example1、example2)建议通过简单地创建一个垂直的LinearLayout 并将ViewPager 和TabLayout 指定为其中的两个独立元素来解决上述问题LinearLayout.
上述解决方案不再可行,因为现在您必须将TabLayout 指定为ViewPager (reference) 内部的一个元素,如下所示:
<androidx.viewpager.widget.ViewPager
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<com.google.android.material.tabs.TabLayout
android:id="@+id/tab_layout"
android:layout_width="match_parent"
android:layout_height="48dp"
>
</com.google.android.material.tabs.TabLayout>
</androidx.viewpager.widget.ViewPager>
然后,要将ViewPager 与TabLayout“合并”,必须在TabLayout 实例上调用setupWithViewPager(ViewPager vp) 方法:
ViewPager viewPager = (ViewPager) findViewById(R.id.pager);
MainPagerAdapter mpa = new MainPagerAdapter(getSupportFragmentManager(), 3);
viewPager.setAdapter(mpa);
TabLayout tabLayout = (TabLayout) findViewById(R.id.tab_layout);
tabLayout.setupWithViewPager(viewPager);
现在,我怎样才能通过 xml 代码或以编程方式巧妙地将 TabLayout 置于 ViewPager 的底部?
【问题讨论】:
标签: android android-fragments android-viewpager android-tablayout