TabLayout的不同tabMode

时间:2015-07-02 17:02:04

标签: android android-layout android-tablayout

我正在使用ViewPager和TabLayout。如果选项卡可以放在显示选项卡上,则它们必须是:

app:tabMode="fixed"

其他

app:tabMode="scrollable"

我该怎么做?

5 个答案:

答案 0 :(得分:3)

我没有得到你的问题,但我可以帮助你,     如果标签计数是静态的或固定的(您知道标签数量),那么app:tabMode="fixed"     如果标签计数是动态的(来自Feed的数据),那么app:tabMode="scrollable"

答案 1 :(得分:1)

如果问题出现在某些屏幕配置(例如小屏幕,纵向配置等)上,则标签需要可滚动,因为它们不适合屏幕,而对于其他屏幕配置/尺寸,选项卡完全适合屏幕,您可以使用资源限定符以不同的屏幕配置/大小不同地定义选项卡。

例如,假设您的标签不适合纵向但适合横向。因此,可能希望标签在纵向中为scrollable,在横向中为fixed

res/layout/tabs.xml将包含要在纵向中使用的TablLayout

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.TabLayout xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/tabs"
    app:tabMode="scrollable"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />

res/layout-land/tabs.xml将包含横向中使用的TabLayout

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.TabLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/tabs"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />

然后在包含选项卡的布局中,只需包括它:

<include layout="@layout/tabs" />

希望这是你正在寻找的。

答案 2 :(得分:1)

在xml布局中,我声明了

  

固定

在片段java类中,我做了这个:

    if (tabLayout == null) {
        tabLayout = (TabLayout) view.findViewById(R.id.tabs);

        DisplayMetrics metrics = new DisplayMetrics();
        WindowManager wm = (WindowManager) view.getContext().getSystemService(Context.WINDOW_SERVICE);
        wm.getDefaultDisplay().getMetrics(metrics);

        int width = metrics.widthPixels;
        int height = metrics.heightPixels;
        double wi = (double) width / (double) metrics.xdpi;
        double hi = (double) height / (double) metrics.ydpi;
        double x = Math.pow(wi, 2);
        double y = Math.pow(hi, 2);
        double screenInches = Math.sqrt(x + y);

        if (screenInches < 4) {
            tabLayout.setTabMode(TabLayout.MODE_SCROLLABLE);
        }
    }

答案 3 :(得分:1)

我们可以在TabLayout中使用两种tabMode:

app:tabMode="fixed"
app:tabMode="scrollable"

在编程上就像

 tabLayout.setTabMode(TabLayout. MODE_FIXED);
tabLayout.setTabMode(TabLayout. MODE_SCROLLABLE);

与MODE_SCROLLABLE相同

要了解TabLayout模式,可以在下面参考链接 https://developer.android.com/reference/android/support/design/widget/TabLayout

答案 4 :(得分:0)

我没有得到你的问题,但在android文档中给出了答案

何时应该使用app:tabMode =“fixed”或app:tabMode =“scrollable”

  1. tabMode =“fixed”固定标签可同时显示所有标签,最适用于受益于标签之间快速支点的内容。

  2. app:tabMode =“scrollable”可滚动标签在任何给定时刻显示标签的子集,并且可以包含更长的标签标签和更多数量的标签。当用户不需要直接比较标签标签时,它们最适合用于浏览触摸界面中的上下文。此模式通常与ViewPager一起使用。