我正在尝试使用与 ViewPager 结合的 TabLayout 来创建三个可滑动的 fragment 。但是,我遇到了一个问题:我希望 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
, setupWithViewPager(ViewPager vp)
必须在 TabLayout
上调用方法实例:
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);
现在,我怎样才能巧妙地让 TabLayout 转到 ViewPager 的底部,无论是从 xml 代码还是以编程方式?
最佳答案
我找到了答案:简单地将 android:layout_gravity="bottom"
添加到 xml 中的 TabLayout
。
所以 xml 实现现在看起来像:
<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"
android:layout_gravity="bottom"
>
</com.google.android.material.tabs.TabLayout>
</androidx.viewpager.widget.ViewPager>
关于Android如何将TabLayout定位到屏幕底部(针对谷歌的 Material 设计库TabLayout),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58057603/