Jak dodać poziomy wskaźnik przewijania dla TabLayout systemu Android

Nov 21 2020

Chcę dodać widok przewijania w poziomie dla TabLayout systemu Android .

TabLayout ma wiele kart i można go przewijać. Ze względu na wiele zakładek, niektóre z nich nie są widoczne na pierwszy rzut oka. Użytkownicy muszą przewijać, aby dostać się do zakładek po prawej stronie (które zwykle są ukryte), więc te zakładki nie przyciągają uwagi użytkownika.

Chodzi o to, aby mieć poziomy wskaźnik przewijania lub strzałkę wskazującą, że po prawej stronie znajduje się więcej kart, aby użytkownicy mogli przewijać je w celu ich znalezienia / użycia.

Pomysł na projekt polega na tym, aby mieć scrollIndicator, a nie tabIndicator. Znalazłem następujący obraz z Google, który jest bliższy temu pomysłowi.

Z góry dziękuję,

Odpowiedzi

6 AgentP Nov 26 2020 at 20:06

Możesz osiągnąć to, co chcesz, hermetyzując układ kart w poziomym widoku przewijania, takim jak ten

<?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>

Będzie to wyglądało tak ......

Kuldeep Dec 03 2020 at 06:25

Cześć, możesz dodać aplikację: tabMode = "scroll"

w przykładzie użyj go jako

<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>