8

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

app:tabMode="fixed"

别的

app:tabMode="scrollable"

我怎样才能做到这一点?

4

5 回答 5

6

我不明白你的问题,但我可以帮助你,如果标签计数是静态的或固定的(你知道标签的数量)那么app:tabMode="fixed" 如果标签计数是动态的(数据来自提要)那么app:tabMode="scrollable"

于 2016-01-11T15:30:58.697 回答
4

我们可以在 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

于 2018-08-27T10:16:29.893 回答
2

在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);
        }
    }
于 2017-03-28T13:32:18.297 回答
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" />

希望这就是你要找的。

于 2016-02-28T18:09:27.113 回答
1

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

当你应该使用 app:tabMode="fixed" 或 app:tabMode="scrollable"

  1. tabMode="fixed" 固定选项卡同时显示所有选项卡,最适合用于受益于选项卡之间快速旋转的内容。

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

于 2016-02-28T17:53:19.800 回答