安卓设计标签布局标签的文本大小



我在更改设计库选项卡布局(android.support.design.widget.TabLayout(选项卡的文本大小时遇到困难。

我设法通过在 TabLayout 中分配 tabTextAppearance 来更改它

app:tabTextAppearance="@style/MyTabLayoutTextAppearance"

以下样式

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

但我有 2 个副作用:

1(我丢失了所选选项卡的主题色

2( 选项卡文本不再大写。

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

使用方式是这样的TabLayout

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

继续使用 tabTextAppearance,就像你所做的那样,但是

1(要修复大写字母的副作用,请在您的样式中添加textAllCap:

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

2( 要修复选定的选项卡颜色副作用,请在 TabLayout xml 中添加以下库属性:

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

希望这有帮助。

work on api 22 & 23制作此样式:

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

并将其应用于您的选项卡布局:

<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"/>

执行以下操作。

1. 将样式添加到 XML

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

2. 应用样式

找到包含选项卡布局的布局并添加样式。添加的行以粗体显示。

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

尝试下面提到的剪裁,它也对我有用。

在我的布局xml中,我有我的TabLayout,为TabLayout添加了样式,如下所示:

<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" />

在我的style.xml中,我已经定义了布局xml中使用的样式,请检查下面添加的样式的代码:

<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>

我希望它能为你工作.....

我有类似的问题和类似的解决方案:

1( 尺寸

在 XML 中,你有 TabLayout,

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

然后在风格上,

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

如果您不希望大写字符在"android:textAllCaps"中输入 false。

2(选定或未选中选项卡的文本颜色,

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));
    }

然后在分辨率/颜色/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" />

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);
            }
        }
    }
}

这段代码对我使用选项卡布局有用。它将更改字体的大小,并更改字体样式。

这也将帮助您查看此链接

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

此代码适用于选项卡布局更改文本颜色,键入面(字体样式(以及文本大小。

我使用的是Android Pie,但似乎没有任何效果,所以我玩了app:tabTextAppearance属性。我知道这不是完美的答案,但可能会帮助某人。

<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" />

值中的 XML 文件

<style name="tab">
    <item name="android:textSize">@dimen/_10ssp</item>
    <item name="android:textColor">#FFFFFF</item>
</style>

选项卡布局

<com.google.android.material.tabs.TabLayout
    android:layout_width="match_parent"
    android:layout_height="@dimen/_27sdp"
    android:layout_marginLeft="@dimen/_10sdp"
    android:layout_marginRight="@dimen/_10sdp"
    app:layout_constraintEnd_toEndOf="parent"
    app:tabTextAppearance="@style/tab"
    app:tabGravity="fill"
    android:layout_marginTop="@dimen/_10sdp"
    app:layout_constraintStart_toStartOf="parent"
   >
    <com.google.android.material.tabs.TabItem
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="TAB 1"
        android:scrollbarSize="@dimen/_4sdp"
        />
    <com.google.android.material.tabs.TabItem
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:scrollbarSize="@dimen/_6sdp"
        android:text="TAB 2" />
    <com.google.android.material.tabs.TabItem
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:scrollbarSize="@dimen/_4sdp"
        android:text="TAB 3" />
</com.google.android.material.tabs.TabLayout>
>   **create custom style in styles.xml**  <style name="customStylename"
> parent="Theme.AppCompat">
>         <item name="android:textSize">22sp</item>  <item name="android:color">colors/primarydark</item>
>     </style>
> 
>   **link to your material same name **  
> <android.support.design.widget.TabLayout  
> android:layout_width="match_parent"
>         android:layout_height="wrap_content" 
>         android:id="@+id/tabs"
>         app:tabTextAppearance="@style/customStylename" 
>       />

这是我的解决方案

fun TabLayout.customizeTabSizeAndFont() {
    val tabFont = Typeface.createFromAsset(context.assets, "font.ttf")
    val tabTextSize = 21f
    val viewGroup = this.getChildAt(0) as ViewGroup
    for (tabVGPos in 0..viewGroup.childCount) {
        val tabViewGroup = viewGroup.getChildAt(tabVGPos) as ViewGroup?
        tabViewGroup?.let {
            for (tabPos in 0..tabViewGroup.childCount) {
                val tab = tabViewGroup.getChildAt(tabPos)
                if (tab is TextView) {
                    tab.typeface = tabFont
                    tab.setTextSize(TypedValue.COMPLEX_UNIT_SP, tabTextSize)
                }
            }
        }
    }
}

最新更新