2016-02-11 4 views
7

Я пытаюсь создать tab layout, который имеет два tabs. Когда я запускаю приложение на небольшом мобильном телефоне, tab layout выглядит нормально, но когда я запускаю то же приложение на Tablet, он показывает это.Как установить ширину вкладки в макете вкладки?

It looks like this on Tablet

Я хочу, чтобы каждая вкладка занимать все пространство без каких-либо пробелов на обоих концах. Я создал tab layout как это ...

private void drawTabLayout() { 
    tabLayout = (TabLayout) findViewById(R.id.tabs); 
    tabLayout.addTab(tabLayout.newTab().setText("Imprint")); 
    tabLayout.addTab(tabLayout.newTab().setText("Legal")); 
    tabLayout.setTabGravity(TabLayout.GRAVITY_FILL); 
    tabLayout.setTabMode(TabLayout.MODE_FIXED); 
    tabLayout.setSelectedTabIndicatorHeight(10); 
    tabLayout.setBackgroundColor(Color.WHITE); 
} 

Я искал много сайтов, но не смог найти правильный ответ . Спасибо заранее.

+0

Из того, что я знаю, вы можете делиться одинаково или сжимать. В противном случае вам придется предоставить пользовательский макет. Попробуйте перекрывая onMeasure, установка customView (ваш вид вкладки) – codebased

+0

Добавить ширину вкладки в fillParent в XML-файле – HassanUsman

+1

codebased

ответ

10

Добавьте этот код в ваш tab_layout.xml

<android.support.design.widget.TabLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      app:tabMaxWidth="0dp" 
      app:tabGravity="fill" 
      app:tabMode="fixed" /> 

Надеется, что это будет работаю для вас ...

+0

Идеальное решение. Благодарю. – InsParbo

1

Вы можете создать вкладку макет, где каждая вкладка имеет настраиваемый вид и добавить эту вкладку в tablayout с любым размером по вашему выбору

View customView = LayoutInflater.from(getContext()).inflate(R.layout.tab_text, null); 

addTab(newTab().setCustomView(customView)) 
Смежные вопросы