如何在 Google Play 等标签页中启用水平滚动?

Posted

技术标签:

【中文标题】如何在 Google Play 等标签页中启用水平滚动?【英文标题】:How to enable horizontal scroll in tab like Google Play? 【发布时间】:2015-09-20 13:13:43 【问题描述】:

我在参考一个很棒的 demo here 关于材料设计。它有标签,但是当我添加太多标签项时,它会被压扁(见截图)。如何让它水平滚动?

我相信下面是我应该进行更改的布局,但我梳理了文档,似乎无法得到它,请帮助!

<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/main_content"
    android:layout_
    android:layout_>

    <android.support.design.widget.AppBarLayout
        android:id="@+id/appbar"
        android:layout_
        android:layout_
        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_
            android:layout_
            android:background="?attr/colorPrimary"
            app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
            app:layout_scrollFlags="scroll|enterAlways" />

        <android.support.design.widget.TabLayout
            android:id="@+id/tabs"
            android:layout_
            android:layout_ />

    </android.support.design.widget.AppBarLayout>

    <android.support.v4.view.ViewPager
        android:id="@+id/viewpager"
        android:layout_
        android:layout_
        app:layout_behavior="@string/appbar_scrolling_view_behavior" />

    <android.support.design.widget.FloatingActionButton
        android:id="@+id/fab"
        android:layout_
        android:layout_
        android:layout_gravity="end|bottom"
        android:layout_margin="@dimen/fab_margin"
        android:src="@drawable/ic_done" />

</android.support.design.widget.CoordinatorLayout>

【问题讨论】:

您是否尝试将您的TabLayout 放入HorizontalScrollingView 嘿@N1to 成功了!请留下作为答案,我会接受。我刚刚用&lt;HorizontalScrollView android:layout_width="match_parent" android:layout_height="match_parent"&gt; 包裹了TabLayout。唯一的问题是,当我从屏幕上滑动到一个标签时,它不会专注于该标签。 别这样,TabLayout本身已经是Horizo​​ntalScrollview了。您应该在 MODE_SCROLLABLE 中设置 TabLayout(它在文档中) 【参考方案1】:

TabLayout 有一个方法 setTabMode(),它可以是 MODE_FIXED(默认)或 MODE_SCROLLABLE,这是您需要的。

您也可以使用app:tabMode="scrollable" 在 XML 中定义它。

【讨论】:

请参阅此博客以获取演示 ekiras.com/2015/12/… 就我而言,我在左侧使用 TabLayout。可以垂直滚动吗?【参考方案2】:

您可以将此app:tabMode="scrollable" 添加到您的android.support.design.widget.TabLayout

【讨论】:

你的答案和接受的答案有什么区别?【参考方案3】:

如果你添加了

app:tabMode="scrollable" 

如上所述,

显示布局,您无法滚动

然后也许你把它放在 XML 文件的顶部,在它下面添加 matchh_parent(高度/宽度)到 ViewPager。因为 viewpager 位于选项卡布局上方,您将无法滚动。 将其添加到 XML 的底部,以便另一个视图与选项卡布局重叠。

【讨论】:

【参考方案4】:

SlidingTabLayout 和 SlidingTabStrip 类是你要找的 您需要从 google 开发者网站复制这些类,在 xml 中添加滑动选项卡布局,并在 set viewpager 中为 java 中的滑动选项卡布局添加。希望对您有所帮助。

【讨论】:

我正在寻找如何从头开始制作的示例,这不是本机控件吗? 据我所知,它不包含在库中,但是有这个控件的源代码。 developer.android.com/samples/SlidingTabsBasic/index.html您需要将它们复制到您的项目中。

以上是关于如何在 Google Play 等标签页中启用水平滚动?的主要内容,如果未能解决你的问题,请参考以下文章