如何在 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 等标签页中启用水平滚动?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Google Play 服务中弹出启用蓝牙提示?

我应该如何在 Google Play 管理中心启用我的 AdMob 真实 ID?

(Unity) 使用 BuildPipeline 构建时启用 App Bundle (Google Play) 选项?

如何打开并检查 Play Protect 是启用还是禁用

Google 登录不适用于 Play 游戏服务启用,但无需启用

在 Google Play 控制台中启用外部营销会发生啥?