【发布时间】:2016-01-28 18:28:37
【问题描述】:
我将 TabLayout 与 viewPager 一起使用,而 viewPager 使用 RecyclerView 来作为它扩展 FragmentStatePageAdapter 的片段。
这一切都很好。 但是,我有一个场景,我想在可滚动模式下(当 tabMode 设置为可滚动时)将 tabLayout 的项目数设置为仅 (7)。
不知何故,当 tabLayout 设置为可滚动时,它只为每个设备设置 5 个项目,但在我的场景中,我希望它调整 7 个项目而不考虑任何设备。
我尝试将项目宽度设为 totalDeviceWidht/7 ,但没有运气,因为它仍然采用相同的宽度。
我还尝试通过编写自定义 tabLayout 来覆盖 onMeasure() 方法。但是,没有运气。
我不确定问题是否出在 pagerTabStrip 上,或者当 tabMode 设置为可滚动时 viewPager 和 tabLayout 如何计算要修复的项目数。
我在过去 3 天一直被这个问题困扰。
这是我的主要 xml 布局..
<?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"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:context="com.movie.bms.views.activities.TimeActivity"
tools:showIn="@layout/activity_time"
>
<android.support.design.widget.TabLayout
android:id="@+id/time_sliding_tab"
android:layout_width="match_parent"
android:layout_height="61.8dp"
android:background="#06acef"
android:elevation="0dp"
android:theme="@style/ThemeOverlay.AppCompat.Dark"
app:elevation="@dimen/elevation.small"
app:tabGravity="center"
app:tabIndicatorColor="@color/white"
app:tabMode="scrollable"
app:tabPaddingEnd="-1dp"
app:tabPaddingStart="-1dp"
android:fillViewport="false"
></android.support.design.widget.TabLayout>
<com.utils.customcomponents.CustomViewPager
android:id="@+id/time_view_pager"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:transitionName="@string/event_body_transition">
</com.utils.customcomponents.CustomViewPager>
</LinearLayout>
任何形式的帮助或建议将不胜感激。
【问题讨论】:
-
如果您将 TabLayout 封装在水平可滚动布局中并在代码中检查您是否有 7 个并仅从 7 个开始激活可滚动布局怎么办?
-
这种方法可能行不通,因为在 7 个项目之后我可能还有 20 个项目。我真正想要的是,我希望 scrollView tabMode 适合 7 个项目,就目前而言,它将项目作为设备宽度。
-
发布您的布局文件
-
@NJNileshJ 更新了,请看一下。
标签: android android-viewpager android-tablayout