Я хочу установить разницу между каждой вкладкой. Как и в PagerTabStrip, который имеет setTextSpacing (int textSpacing), чтобы сделать интервал между вкладками. Может ли TabLayout сделать это?TabLayout задает интервал или край каждой вкладки
ответ
борется с этой проблемой на некоторое время тоже нашел решение по этой теме: Android Design Support Library TabLayout using custom tabs layout but layout wrapping the tabs
<!-- 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">
Вы можете использовать атрибут 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" />
раскладка
<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;
}
Это как заданный запас для четырех арендовать вкладки. Вы можете изменить значения функций setMargins (v1, v2, v3, v4), чтобы получить подходящую установку для количества вкладок, с которыми вы работаете. Надеюсь, это поможет. Обратите внимание: tabHost является объектом TabHost, на котором размещаются разные вкладки, с которыми вы работаете.
Display display = getWindowManager().getDefaultDisplay();
int width = display.getWidth();
View currentView;
for(int i=0;i<tabHost.getTabWidget().getChildCount();i++)
{
//This code removes divider between tabs
tabHost.getTabWidget().setDividerDrawable(null);
tabHost.getTabWidget().getChildAt(i).setLayoutParams(new
LinearLayout.LayoutParams((width/8)-2,50));
currentView = tabHost.getTabWidget().getChildAt(i);
LinearLayout.LayoutParams currentLayout =
(LinearLayout.LayoutParams) currentView.getLayoutParams();
currentLayout.setMargins(30, 5, 80, 0);
}
<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"
/>
По умолчанию андроид дает некоторую minWidth, из-за этого будет минимальная ширина для каждой вкладки. Если вы хотите указать width как wrap_content, тогда дайте minWidth = "0dp", и если вам нужно место между вкладками, то дайте tabPaddingStart = "10dp" и tabPaddingEnd = "10dp" в соответствии с вашим требованием –
спасибо своей работы. –