您是否可以制作一个可滚动的TabLayout,每个标签之间的间距相等?

时间:2018-08-28 14:56:29

标签: android android-tablayout android-tabs

我已经尝试了好一阵子了,没有运气。这是我需要完成的。我的设计师想要一个选项卡布局,使其无法跨越其整个给定容器。实现此目的的一种方法是使用属性app:tabMode="fixed"创建一个TabLayout,设计人员想要的是它下方的标签指示符必须跨越该标签中文本的每个边缘不超过5dp,这可以通过

    <android.support.design.widget.TabLayout
        android:id="@+id/tabs"
        android:layout_width="match_parent"
        android:layout_height="40dp"
        android:background="@color/bpWhite"
        android:textAllCaps="true"
        app:tabPaddingStart="5dp"
        app:tabPaddingEnd="5dp"
        app:tabMinWidth="0dp"
        app:tabIndicatorColor="@color/accent"
        app:tabIndicatorHeight="4dp"
        app:tabGravity="fill"
        app:tabMode="scrollable">

问题是,将选项卡模式设置为可滚动确实会给我所需的指示器外观,但是现在我失去了每个选项卡之间的相等间距。理想情况下,我想完成这样的事情:

 <TextView android:layout_width="wrap_content"
android:layout_height="wrap_content"/>

<!-- Dynamic Spacer -->
<View android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"></View>

<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content"/>

<!-- Dynamic Spacer -->
<View android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"></View>

<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content"/>

<!-- Dynamic Spacer -->
<View android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"></View>

关闭TabLayout文档https://developer.android.com/reference/android/support/design/widget/TabLayout 我可以为自定义视图充气,这在这种情况下无济于事,因为在其中添加了一个分隔符,指示器会在该分隔符下划线。我也只能在TabLayout XML容器中添加TabItems,因此也不能在其中注入间隔符。

似乎唯一的选择是创建自己的TabLayout版本,该版本仅将制表符指示符包装到制表符文本的长度(加上填充),并在每个制表符之间插入无效的空格,因此我仅处理偶数触摸事件间隔(例如,制表符[0],制表符[2],制表符[4])。请告诉我我错了,因为我真的很讨厌为此的自定义解决方案。

TLDR;我需要一个TabLayout,其中的指示符环绕标签文本的宽度,同时动态填充标签之间的边距以在给定任何屏幕尺寸的情况下创建等距的布局。 tabMode:"scrollable"给了我所需的指示符环绕,但制表符之间没有相等的间距,tabMode:"fixed"给了我所需的选项卡之间的间距,但指示符跨越了整个宽度,而不是包裹在文本上。 / p>

所需的最终结果是这样:

enter image description here

0 个答案:

没有答案