首页 > 解决方案 > Android如何将TabLayout定位到屏幕底部(针对谷歌的材料设计库TabLayout)

问题描述

我正在尝试使用与 ViewPager 连接的 TabLayout 来创建三个可滑动的片段。但是,我遇到了一个问题:我希望 TabLayout 位于屏幕底部,但 ViewPager 强制它位于顶部

TabLayout 曾经位于android.support.design.widget库中。然而,自从引入了 androidx 以来,这个库已经发生了变化。新库是com.google.android.material.tabs.TabLayout

以前的(和过时的)帖子(example1example2 )通过简单地创建一个垂直并将andLinearLayout指定为 that 的两个单独元素,为上述问题提出了一个简单的解决方案。ViewPagerTabLayoutLinearLayout

上述解决方案不再可行,因为现在,您必须将 指定为( referenceTabLayout )内的元素,如下所示:ViewPager

<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);

现在,我怎样才能通过 xml 代码或以编程方式巧妙地使 TabLayout 进入 ViewPager 的底部?

标签: androidandroid-fragmentsandroid-viewpagerandroid-tablayout

解决方案


我找到了答案: simpy add android:layout_gravity="bottom"the TabLayoutin xml.

所以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>

推荐阅读