【问题标题】:Fixed visible tabs/dots TabLayout android修复了可见的标签/点 TabLayout android
【发布时间】:2019-01-20 01:43:41
【问题描述】:

我有一个自定义视图,里面有一个 ViewPager,并且有一个 TabLayout 附加到 ViewPager。机器人视图设置为匹配父视图。

<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(cardviews)中有很多项目,所以我想要修复 tablayout 的最大可见“点”(选项卡),但是,当用户滚动视图寻呼机时,点必须“移动/动画”。

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

但我无法同时将最大可见点“修复”为一个值。

例如 10 个可见的点,但是当用户滚动 ViewPager 时,不会再出现点,但它们会动画。

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

在接下来的示例中,view pager 有 61 个卡片浏览:

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

设置为固定模式:(显示 61 个点)

【问题讨论】:

    标签: android android-viewpager android-tablayout viewpagerindicator


    【解决方案1】:

    在标签布局中试试这个,

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

    【讨论】:

    • 嗨@ShubhamVala,感谢您的帮助,这两行帮助我使其成为“可滚动”/“滑块”点,但我还需要将最大“点”可见值修复为一个值“N”
    • 试试这个@Shudy viewPager.setOffscreenPageLimit(no of page want to show);
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多