修复了可见的标签/点TabLayout android

时间:2018-08-13 10:40:23

标签: android android-viewpager android-tablayout viewpagerindicator

我有一个自定义视图,其中包含ViewPager,并且TabLayout附加到ViewPager。 Bot视图设置为与父视图匹配。

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:fitsSystemWindows="true">

    <CarouselPointMarkerViewPager
        android:id="@+id/carousel_point_view_pager"
        android:layout_width="match_parent"
        android:layout_height="160dp"
        android:clipToPadding="false"
        android:overScrollMode="never"
        android:paddingStart="@dimen/carousel_recycler_padding_start"
        android:paddingEnd="@dimen/carousel_recycler_padding_end"
        android:layout_gravity="center"/>

    <android.support.design.widget.TabLayout
        android:id="@+id/tablayout_point"
        android:layout_width="wrap_content"
        android:layout_height="25dp"
        android:layout_marginBottom="20dp"
        android:layout_marginStart="20dp"
        android:layout_marginTop="10dp"
        android:layout_gravity="start|bottom"
        app:tabBackground="@drawable/tab_selector_carousel_point"
        app:tabIndicatorHeight="0dp"
        app:tabPaddingEnd="4dp"/>

</LinearLayout>

TabLayout背景是:

<selector
    xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:drawable="@drawable/active_point"
          android:state_selected="true"/>

    <item android:drawable="@drawable/non_active_point"/>

</selector>

示例:active_point

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape
            android:innerRadius="0dp"
            android:shape="ring"
            android:thickness="4dp"
            android:useLevel="false">
            <solid android:color="@color/bluelight"/>
        </shape>
    </item>
</layer-list>

目前,它可以完美运行。我将在viewpager(卡片视图)中有很多项目,所以我想要修复固定布局的最大可见“点”(选项卡),但是,当用户滚动视图分页器时,点必须“移动/设置动画” “。

此刻,我可以使用参数app:tabMode="scrollable"使其“移动”。

但是我无法同时将最大可见点固定为一个值。

例如10个可见的点,但是当用户滚动ViewPager时,将不再显示任何点,但它们会设置动画。

我还尝试给TabLayout赋予一个固定的With,但不能正常工作,它只显示1。

在下一个示例中,“查看传呼机”具有61次卡片浏览:

设置为可滚动模式:(在这种情况下,它显示一些点,并且可以“滑动”)

enter image description here

设置为固定模式:(显示61个点) enter image description here

1 个答案:

答案 0 :(得分:0)

在标签页布局中尝试此操作

<android.support.design.widget.TabLayout
    android:id="@+id/tablayout_point"
    android:layout_width="wrap_content"
    android:layout_height="25dp"
    android:layout_marginBottom="20dp"
    android:layout_marginStart="20dp"
    android:layout_marginTop="10dp"
    android:layout_gravity="start|bottom"
    app:tabBackground="@drawable/tab_selector_carousel_point"
    app:tabIndicatorHeight="0dp"
    app:tabGravity="center"    <-- add this line.
    app:tabMode="scrollable"   <-- add this line. 
    app:tabPaddingEnd="4dp"/>