Kích thước văn bản của thiết kế android Các tab TabLayout


97

Tôi gặp khó khăn khi thay đổi kích thước văn bản của các tab trong tablayout của thư viện thiết kế (android.support.design.widget.TabLayout).

Tôi đã quản lý để thay đổi nó bằng cách gán tabTextAppearance trong TabLayout

app:tabTextAppearance="@style/MyTabLayoutTextAppearance"

phong cách sau

<style name="MyTabLayoutTextAppearance" parent="TextAppearance.AppCompat.Widget.ActionBar.Title.Inverse">
    <item name="android:textSize">14sp</item>
</style>

nhưng tôi có 2 tác dụng phụ:

1) Tôi bị mất màu nhấn của tab đã chọn

2) Văn bản tab không được viết hoa nữa.

Câu trả lời:


187
<style name="MineCustomTabText" parent="TextAppearance.Design.Tab">
    <item name="android:textSize">16sp</item>
</style>

Sử dụng là TabLayoutnhư thế này

<android.support.design.widget.TabLayout
            app:tabTextAppearance="@style/MineCustomTabText"
            ...
            />

Làm việc tốt. Tôi đang sử dụng hỗ trợ lib 25.1.0.
Sufian

Hoạt động trên thư viện hỗ trợ 25.3.1
Luis

tuyệt vời Thax bro giúp bạn tiết kiệm thời gian của tôi ,,, làm việc của nó trên lib 25.1.0
Kunal Dharaiya

@Sufian, nó không hoạt động với tôi và tôi đang sử dụng phiên bản hỗ trợ giống như bạn (25.1.0). Bất kỳ ý tưởng tại sao?
Sam

2
Nếu văn bản tab của bạn có nhiều dòng. Sau đó, tab Hiển thị nó bằng cách sử dụng một trường khác để đặt kích thước văn bản. Hãy kiểm câu trả lời của tôi ở đây cho giải pháp: stackoverflow.com/a/48797329/700693
Evren Ozturk

46

Tiếp tục sử dụng tabTextAppearance như bạn đã làm nhưng

1) để sửa hiệu ứng phụ chữ hoa, hãy thêm textAllCap theo phong cách của bạn:

<style name="MyTabLayoutTextAppearance" parent="TextAppearance.AppCompat.Widget.ActionBar.Title.Inverse">
    <item name="android:textSize">14sp</item>
    <item name="android:textAllCaps">true</item>
</style>

2) để sửa hiệu ứng phụ màu tab đã chọn, hãy thêm vào TabLayout xml các thuộc tính thư viện sau:

app:tabSelectedTextColor="@color/color1"
app:tabTextColor="@color/color2" 

Hi vọng điêu nay co ich.


Nó hoạt động như một sự quyến rũ bây giờ. Cảm ơn u2gilles cho bạn câu trả lời nhanh chóng.
Malko

@ u2gilles Tôi đã sử dụng bố cục tùy chỉnh trong các tab là tuyến tính với 2 chế độ xem văn bản nhưng tôi muốn chỉ thay đổi một màu chế độ xem văn bản trên lựa chọn tab?
Erum

1
Nếu bạn muốn đặt <item name = "android: textAllCaps"> false </item> thì t ở đây phải là một chuỗi nữa ngoài twos: <item name = "textAllCaps"> false </item>
CodeToLife

24

Làm việc trên api 22 & 23 Tạo kiểu này:

<style name="TabLayoutStyle" parent="Base.Widget.Design.TabLayout">
    <item name="android:textSize">12sp</item>
    <item name="android:textAllCaps">true</item>
</style>

Và áp dụng nó vào tablayout của bạn:

<android.support.design.widget.TabLayout
            android:id="@+id/contentTabs"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dp"
            android:background="@drawable/list_gray_border"
            app:tabTextAppearance="@style/TabLayoutStyle"
            app:tabSelectedTextColor="@color/colorPrimaryDark"
            app:tabTextColor="@color/colorGrey"
            app:tabMode="fixed"
            app:tabGravity="fill"/>

21

Làm như sau.

1. Thêm Kiểu vào XML

    <style name="MyTabLayoutTextAppearance" parent="TextAppearance.Design.Tab">
        <item name="android:textSize">14sp</item>
    </style>

2. Áp dụng phong cách

Tìm Bố cục chứa TabLayout và thêm kiểu. Dòng thêm vào được in đậm.

    <android.support.design.widget.TabLayout
        android:id="@+id/tabs"
        app:tabTextAppearance="@style/MyTabLayoutTextAppearance" 
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

18

Hãy thử đoạn mã được đề cập bên dưới, nó cũng phù hợp với tôi.

Trong bố cục của tôi xml, nơi tôi có của tôi TabLayout, đã thêm kiểu TabLayoutnhư dưới đây:

<android.support.design.widget.TabLayout
    android:id="@+id/tab_layout"
    style="@style/MyCustomTabLayout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:tabGravity="fill"
    app:tabMode="fixed" />

và trong của tôi, style.xmltôi đã xác định kiểu được sử dụng trong xml bố cục của mình, hãy kiểm tra mã cho các kiểu được thêm bên dưới:

<style name="MyCustomTabLayout" parent="Widget.Design.TabLayout">
    <item name="android:background">YOUR BACKGROUND COLOR</item>
    <item name="tabTextAppearance">@style/MyCustomTabText</item>
    <item name="tabSelectedTextColor">SELECTED TAB TEXT COLOR</item>
    <item name="tabIndicatorColor">SELECTED TAB INDICATOR COLOR</item>
</style>

<style name="MyCustomTabText" parent="TextAppearance.AppCompat.Button">
    <item name="android:textSize">YOUR TEXT SIZE</item>
    <item name="android:textStyle">bold</item>
    <item name="android:textColor">@android:color/white</item>
</style>

Tôi hy vọng nó sẽ hiệu quả với bạn .....


15

Tôi gặp sự cố tương tự và cách giải quyết tương tự:

1) Kích thước

trong xml bạn có TabLayout,

        <android.support.design.widget.TabLayout
            ...
            app:tabTextAppearance="@style/CustomTextStyle"
            ...
        />

sau đó theo phong cách,

        <style name="CustomTextStyle" parent="@android:style/TextAppearance.Widget.TabWidget">
           <item name="android:textSize">16sp</item>
           <item name="android:textAllCaps">true</item>
        </style>

Nếu bạn không muốn các ký tự in hoa đặt sai trong "android: textAllCaps"

2) Màu văn bản của các Tab đã chọn hoặc không được chọn,

TabLayout tabLayout = (TabLayout) view.findViewById(R.id.tabs);
    tabLayout.setupWithViewPager(viewPager);

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        tabLayout.setTabTextColors(getResources().getColorStateList(R.color.tab_selector,null));
    } else {
        tabLayout.setTabTextColors(getResources().getColorStateList(R.color.tab_selector));
    }

sau đó trong res / color / tab_selector.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/white" android:state_selected="true" />
<item android:color="@color/white" />


8
TabLayout  tab_layout = (TabLayout)findViewById(R.id.tab_Layout_);

private void changeTabsFont() {
    Typeface font = Typeface.createFromAsset(getActivity().getAssets(), "fonts/"+ Constants.FontStyle);
    ViewGroup vg = (ViewGroup) tab_layout.getChildAt(0);
    int tabsCount = vg.getChildCount();
    for (int j = 0; j < tabsCount; j++) {
        ViewGroup vgTab = (ViewGroup) vg.getChildAt(j);
        int tabChildsCount = vgTab.getChildCount();
        for (int i = 0; i < tabChildsCount; i++) {
            View tabViewChild = vgTab.getChildAt(i);
            if (tabViewChild instanceof TextView) {
                ((TextView) tabViewChild).setTypeface(font);
                ((TextView) tabViewChild).setTextSize(15);

            }
        }
    }
}

Mã này phù hợp với tôi bằng cách sử dụng tablayout. Nó sẽ thay đổi kích thước phông chữ và cũng thay đổi kiểu phông chữ.

Điều này cũng sẽ giúp các bạn vui lòng kiểm tra liên kết này

https://stackoverflow.com/a/43156384/5973946

Mã này hoạt động để Tablayout thay đổi màu văn bản, kiểu khuôn mặt (kiểu phông chữ) và cả kích thước văn bản.


0

Tôi đang sử dụng Android Pie và dường như không có gì hoạt động nên tôi đã thử với thuộc tính app: tabTextAppearance. Tôi biết nó không phải là câu trả lời hoàn hảo nhưng có thể giúp ích cho ai đó.

<android.support.design.widget.TabLayout
        android:id="@+id/tabs"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:tabMode="fixed"
        app:tabTextAppearance="@style/TextAppearance.AppCompat.Caption" />
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.