TabLayout с двумя вкладками одна 75% другая 25% - PullRequest
0 голосов
/ 29 марта 2019

Я работаю над экраном с двумя вкладками:

  • Первая должна иметь ширину экрана 75%.
  • Вторая должна иметь ширину25% экрана.

Пример:

enter image description here

Вот как я определил свой TabLayout:

<android.support.design.widget.TabLayout
android:id="@+id/tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:tabGravity="fill"
app:tabMaxWidth="0dp"
app:tabMode="scrollable"
app:tabSelectedTextColor="@color/orange"
app:tabTextAppearance="@style/TabTextAppearance"
app:tabTextColor="@color/darkGrey" >

Как настроить макет вкладок для фиксирования желаемой ширины?

Ответы [ 2 ]

0 голосов
/ 29 марта 2019

Для LinearLayout можно использовать механизм weight:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal">

    <View
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="3"
        android:background="#0f0" />

    <View
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:background="#00F" />

</LinearLayout>

Первый View имеет вес 3, а второй имеет 1. Так что вместе 4 (первые 75%, вторые 25%)

0 голосов
/ 29 марта 2019

Вы можете сделать это программно. Добавьте их отдельно для разных вкладок.

LinearLayout layout = ((LinearLayout) ((LinearLayout) tabLayout.getChildAt(0)).getChildAt(YOUR_TAB_NUMBER));
LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams) layout.getLayoutParams();
layoutParams.weight = YOUR_WEIGHT; // e.g. 0.5f
layout.setLayoutParams(layoutParams);
...