it-swarm.com.ru

TabLayout установить интервал или выделить каждую вкладку

Я хочу установить поле между каждой вкладкой. Как и в PagerTabStrip, который имеет setTextSpacing (int textSpacing), чтобы сделать интервал между вкладками. Может ли TabLayout сделать это?

11
Akirayjin

Некоторое время мы боролись с этой проблемой, но нашли решение в этой теме: Библиотека поддержки дизайна Android TabLayout с использованием пользовательского макета вкладок, но макет оборачивает вкладки

<!-- Add the padding to tabPaddingStart and/or tabPaddingEnd -->
<Android.support.design.widget.TabLayout
        Android:id="@+id/tabLayout"
        Android:layout_width="match_parent"
        Android:layout_height="@dimen/tab_layout_height"
        app:tabPaddingStart="10dp"
        app:tabPaddingEnd="10dp">
37
Sammy Patenotte

Вы можете использовать атрибут tabMinWidth . Вот так.

<Android.support.design.widget.TabLayout
    Android:id="@+id/tabs"
    Android:layout_width="match_parent"
    Android:layout_height="44dp"
    app:tabIndicatorColor="@color/default_enable"
    app:tabTextColor="@color/font_default_03"
    app:tabSelectedTextColor="@color/default_enable"
    app:tabMinWidth="50dp"
    Android:clipToPadding="false"
    Android:paddingLeft="4dp"
    Android:paddingRight="4dp" />
4
권홍재

расположение

<Android.support.design.widget.TabLayout
        Android:id="@+id/tabLayout"
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"/>

Джава

TabLayout tabLayout = (TabLayout) findViewById(R.id.tabLayout);
int betweenSpace = 100;

ViewGroup slidingTabStrip = (ViewGroup) tabLayout.getChildAt(0);

for (int i=0; i<slidingTabStrip.getChildCount()-1; i++) {
    View v = slidingTabStrip.getChildAt(i);
    ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) v.getLayoutParams();
    params.rightMargin = betweenSpace;
}
2
仲里洋平

Вы можете удалить вес и установить marginEnd, marginStart и ширину для вкладок в TabLayout.

Котлин:

val tabs = tabLayout.getChildAt(0) as ViewGroup

for (i in 0 until tabs.childCount ) {
       val tab = tabs.getChildAt(i)
       val layoutParams = tab.layoutParams as LinearLayout.LayoutParams
       layoutParams.weight = 0f
       layoutParams.marginEnd = 12.dpToPx()
       layoutParams.marginStart = 12.dpToPx()
       layoutParams.width = 10.dpToPx()
       v.layoutParams = layoutParams
       tabLayout.requestLayout()
}

Джава:

ViewGroup tabs = (ViewGroup) tabLayout.getChildAt(0);

for (int i = 0; i < tabs.getChildCount() - 1; i++) {
       View tab = tabs.getChildAt(i);
       LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams) tab.getLayoutParams();
       layoutParams.weight = 0;
       layoutParams.setMarginEnd(12);
       layoutParams.setMarginEnd(12);
       layoutParams.width = 10;
       tab.setLayoutParams(layoutParams);
       tabLayout.requestLayout();
}
0
Rasoul Miri
<Android.support.design.widget.TabLayout
        Android:id="@+id/tab_layout"
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        app:tabMinWidth="0dp"
        app:tabMode="scrollable"
        />
0
Ishwar Verma