Текст внутри вкладок TabLayout не центрирован

Я использую TabLayout. Я хочу, чтобы TabLayout заполнил всю ширину экрана, поэтому я добавил app:tabGravity="fill". Моя проблема в том, что теперь текст вкладки не центрирован. Вот скриншот:

Пожалуйста, обратите внимание на розовую полосу на первой вкладке

Код TabLayout выглядит следующим образом:

    <android.support.design.widget.TabLayout
        android:id="@+id/tab_layout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/toolbar"
        app:tabMode="fixed"
        app:tabGravity="fill"
        app:tabTextColor="#d3d3d3"
        app:tabSelectedTextColor="#ffffff"
        app:tabIndicatorColor="#ff00ff"
        android:minHeight="?attr/actionBarSize"
        />

Я видел много вопросов, но ни один из них не решает мою проблему. Любая помощь высоко ценится. Для деталей я хочу сказать, что я пробую этот пример. Устройство работает на Android 2.3.6 (API 10). Экран 320х240.


person Birendra Singh    schedule 18.01.2017    source источник
comment
Используйте это для настройки текста: android:gravity=center ИЛИ android:textAlignment=center   -  person MezzDroid    schedule 23.12.2020


Ответы (6)


Используйте это для настройки текста:

android:gravity="center" OR android:textAlignment="center"

вам следует создать настраиваемую вкладку.. вы используете эти атрибуты для tabLayout, которые не будут работать... приведенный выше пример ссылки использует файл с именем custom_tab.xml. Используйте это для определения вашего textView и поместите в него эти атрибуты.

person MezzDroid    schedule 18.01.2017
comment
Ни один из android:gravity="center" и android:textAlignment="center" не может решить проблему. - person Birendra Singh; 18.01.2017
comment
Было бы лучше, если бы вы добавили свой комментарий к основному ответу. - person Birendra Singh; 18.01.2017

просто сделайте так: -

       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       app:tabMaxWidth="0dp"
       app:tabGravity="fill"
person M. H.    schedule 12.08.2018

Добавьте это в макет xml android:gravity="center"

вы можете обратиться к этому для более подробной информации

http://joshclemm.com/blog/?p=136

person santosh kumar    schedule 18.01.2017
comment
Уже попробовал. Это не работает. Я видел другие вопросы, которые говорят использовать android:gravity="center". - person Birendra Singh; 18.01.2017
comment
Вы используете textview для отображения . - person santosh kumar; 18.01.2017
comment
вы должны добавить гравитацию в текстовом представлении, а не в макете вкладок. - person santosh kumar; 18.01.2017
comment
Я уже сказал, что иду за ответом на какой-то вопрос. stackoverflow.com/a/35968394/5969624 - person Birendra Singh; 18.01.2017
comment
вы пропустили макет вкладок, там нет гравитации вкладок. - person santosh kumar; 18.01.2017

По умолчанию текст должен располагаться по центру, если вы не переопределили другой нецентрированный стиль.

в любом случае, если вы уверены, что Gravity="center" не работает, вы также можете поместить свой собственный макет в качестве фона вкладки. поэтому вы создаете относительный макет с textView в центре. (таким образом вы можете поместить желаемый макет в качестве элементов вкладок), так что не стесняйтесь.

TabLayout tabLayout = (TabLayout)findViewById(R.id.tab_layout);
tabLayout.getTabAt(postion).setCustomView(resourceId);

надеюсь полезно .

person Mahdi    schedule 18.01.2017

Как ни странно, предварительный просмотр в Android Studio показывает метки вкладок по центру, но на устройстве они выровнены по левому краю.

Как предложил другой ответ, использование пользовательского представления - хороший способ получить контроль над макетом.

Создайте файл макета layout/view_tab_label.xml с TextView с идентификатором @android:id/text1, чтобы вы все еще могли указать текст табуляции внутри TabItem:

<TextView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/text1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:textColor="@color/tab_label"
    android:gravity="center"/>

Ссылка на этот макет из элемента вкладки (атрибут android:layout в каждом TabItem):

<android.support.design.widget.TabLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:tabIndicatorColor="@color/selected_tab"
    app:tabBackground="@color/tab_background">

    <android.support.design.widget.TabItem
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout="@layout/view_tab_label"
        android:text="@string/tab_1_title" />

    <android.support.design.widget.TabItem
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout="@layout/view_tab_label"
        android:text="@string/tab_2_title" />

</android.support.design.widget.TabLayout>

Создайте файл цветовых ресурсов color/tab_label.xml:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="@color/selected_tab" android:state_selected="true"/>
    <item android:color="@color/unselected_tab" android:state_selected="false"/>
</selector>
person bolot    schedule 16.10.2017

Моя проблема заключалась в том, что TextView не был центрирован внутри макета. Не сам текст

Так. В ТекстВью.

android:layout_gravity="center"
person icarumbas    schedule 14.08.2020