Как добавить индикатор горизонтальной прокрутки для Android TabLayout

Nov 21 2020

Я хочу добавить горизонтальную прокрутку для Android TabLayout .

TabLayout имеет несколько вкладок и его можно прокручивать. Из-за нескольких вкладок на нем некоторые из них не видны с первого взгляда. Пользователи должны прокручивать страницу, чтобы перейти к крайним правым вкладкам (которые обычно скрыты), поэтому эти вкладки не привлекают внимания пользователя.

Идея состоит в том, чтобы иметь индикатор горизонтальной прокрутки или стрелку, указывающую, что справа есть больше вкладок, чтобы пользователи могли прокручивать их, чтобы найти / использовать их.

Идея дизайна состоит в том, чтобы иметь scrollIndicator и не иметь tabIndicator. Я нашел следующее изображение от Google, которое ближе к идее.

Заранее спасибо,

Ответы

6 AgentP Nov 26 2020 at 20:06

Вы можете добиться того, чего хотите, инкапсулируя макет вкладки внутри горизонтальной прокрутки, как это

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <HorizontalScrollView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:paddingBottom="8dp"
        android:scrollbars="horizontal">

        <com.google.android.material.tabs.TabLayout
            android:id="@+id/tabLayout"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginBottom="5dp"
            app:tabGravity="center"
            app:tabIndicator="@color/white"
            app:tabMode="fixed">

            <com.google.android.material.tabs.TabItem
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Tab 1"/>

            <com.google.android.material.tabs.TabItem
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Tab 2"/>

            <com.google.android.material.tabs.TabItem
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Tab 3"/>

            <com.google.android.material.tabs.TabItem
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Tab 4"/>

            <com.google.android.material.tabs.TabItem
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Tab 5"/>

            <com.google.android.material.tabs.TabItem
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Tab 6"/>


            <com.google.android.material.tabs.TabItem
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Tab 7"/>



            <com.google.android.material.tabs.TabItem
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Tab 8"/>



            <com.google.android.material.tabs.TabItem
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Tab 9"/>

            <com.google.android.material.tabs.TabItem
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Tab 10"/>
        </com.google.android.material.tabs.TabLayout>

    </HorizontalScrollView>

</LinearLayout>

Это будет выглядеть так ...

Kuldeep Dec 03 2020 at 06:25

Привет, вы можете добавить приложение: tabMode = "scroll"

в примере используйте его как

<android.support.design.widget.TabLayout
            android:id="@+id/tabs"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:tabMode="scroll"
            app:tabGravity="fill"/>
    </android.support.design.widget.AppBarLayout>