选项卡的android字体大小

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了选项卡的android字体大小相关的知识,希望对你有一定的参考价值。

我问过几次这个任务,但我没有解决方案:(我的问题是,我有一个带有标签活动的android应用程序,我必须设置我的标签的字体大小,但我不知道怎么样。

在我的活动中,我以编程方式设置我的标签:

    TabLayout tabLayout = (TabLayout) findViewById(R.id.tab_layout);
    tabLayout.addTab(tabLayout.newTab().setText("MY TAB 1"));
    tabLayout.addTab(tabLayout.newTab().setText("MY TAB 2"));
    tabLayout.addTab(tabLayout.newTab().setText("MY TAB 3"));
    tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);

问题是,最后的1 - 2个字母将被剪切,所以我必须设置较小的字体大小,但如何?

我希望有人能帮助我。

答案

在styles.xml中写下以下代码

<style name="MyTabLayout" parent="Base.Widget.Design.TabLayout">
        <item name="tabTextAppearance">@style/MyTabTextAppearance</item>
</style>

<style name="MyTabTextAppearance" parent="TextAppearance.AppCompat.Button">
        <item name="android:textSize">18sp</item>
        <item name="android:textColor">@android:color/white</item>
        <item name="textAllCaps">true</item>
</style>

在您的tablayout中,设置如下所示的样式。

<android.support.design.widget.TabLayout
     style="@style/MyTabLayout"
     android:layout_width="width"
     android:layout_height="height"/>
另一答案

试试这个

创建名为custom_tab.xml的xml布局

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/tab"
android:textColor="@color/colorAccent"/>

比你的活动设置文本大小编程方式如下面的代码

TextView tabOne = (TextView) 
LayoutInflater.from(this).inflate(R.layout.custom_tab, null);
tabOne.setText("ONE");
tabOne.setTextSize(14); // set font size as per your requirement 
tabLayout.getTabAt(0).setCustomView(tabOne);
另一答案

如果要以编程方式更改字体大小,可以使用java反射来访问TabLayout类中的整数字段tabTextSize,并根据您的要求设置字体大小。

public static void updateTabLayoutFontSize(TabLayout tabLayout, int textSizeInPixel) 
  try 
     Field mCursorDrawableRes = TabLayout.class.getDeclaredField("tabTextSize");
     mCursorDrawableRes.setAccessible(true);
     mCursorDrawableRes.set(tabLayout, textSizeInPixel);
   catch (Exception e) 
    Log.d("TAG1", "Failed to update tablayout font using reflection");
  

另一答案

如果你直接在标签布局的样式中设置text_size,它就不起作用!!你必须将它设置为一个具有parent =“@ android:style / TextAppearance.Widget.TabWidget”的样式

<style name="tab_text" parent="@android:style/TextAppearance.Widget.TabWidget">
    <item name="android:fontFamily">@fonts/iransans_b</item>
    <item name="android:textSize">@dimen/textSize_Large</item>
    <item name="textAllCaps">false</item>
</style>

<style name="Tab" parent="Widget.Design.TabLayout">
    <item name="tabTextAppearance">@style/tab_text</item>
</style>


 <com.google.android.material.tabs.TabLayout
                 android:id="@+id/item_tabs"
                 android:layout_width="match_parent"
                 android:layout_height="@dimen/margin_dp_65"
                 style="@style/Tab"/>

这也是tab的完整样式:

 <style name="Tab_WithBackground" parent="Widget.Design.TabLayout">
    <item name="tabSelectedTextColor">@color/purple</item>
    <item name="tabTextColor">@drawable/tab_text_color</item>
    <item name="tabIndicatorColor">@color/white</item>
    <item name="tabGravity">fill</item>
    <item name="tabIndicatorHeight">4dp</item>
    <item name="android:tabStripEnabled">true</item>
    <item name="android:padding">0dp</item>
    <item name="tabMaxWidth">0dp</item>
    <item name="android:minHeight">@dimen/margin_dp_80</item>
    <item name="tabTextAppearance">@style/tab_text</item>
</style>
另一答案
#If you dont want to use style.xml and do by prgramatically the Use this in your xml layout. #
<android.support.design.widget.TabLayout
                android:id="@+id/tab_Layout_dashboard"
                android:layout_below="@id/ll_profile"
                android:layout_width="match_parent"
                android:layout_height="0dp"
                android:layout_weight="0.15"
                style="@style/Base.Widget.Design.TabLayout"
                android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
                />

            <android.support.v4.view.ViewPager
                android:layout_below="@id/tab_Layout_dashboard"
                android:id="@+id/pager_tutor"
                android:layout_width="match_parent"
                android:layout_height="0dp"
                android:layout_weight="0.85"
                />


#In your activity or fragment use this method#

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

                
            
        
    

This code works for Tablayout change text color,type face(Font style) and also Text size. IF this works for you also then make correct so other user can easily solve his/her problem

另一答案

也尝试:

<style name="MyCustomTabText" parent="TextAppearance.Design.Tab">
   <item name="android:textSize">14sp</item>
    <item name="android:textColor">?android:textColorSecondary</item>
    <item name="textAllCaps">false</item>
</style>

<android.support.design.widget.TabLayout
    android:id="@+id/tabs"
    app:tabTextAppearance="@style/MyCustomTabText" 
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />
另一答案

我做了以下事情:

像这样创建一个attrs.xml条目

<resources>
  <declare-styleable name="SegmentedTabLayout">
    <attr name="fontSize" format="dimension" />
  </declare-styleable>
</resources>

然后创建一个字体大小属性和初始化方法,您将在构造函数中调用这样的方法

public float FontSize  get; set; 

private void InitializeAttrs(Context context, IAttributeSet attrs)

    if (context == null || attrs == null)
            return;

    var styleAttributes = context.ObtainStyledAttributes(attrs, Resource.Styleable.SegmentedTabLayout);

    if (styleAttributes == null)
        return;

    FontSize = styleAttributes.GetDimension(Resource.Styleable.SegmentedTabLayout_fontSize, -1);

    styleAttributes.Recycle();

然后我使用了病毒9966的方法(稍微改进了一下)并在覆盖NewTab方法中调用它

public override Tab NewTab()

    var tab = base.NewTab();

    ChangeFontSize(tab);

    return tab;


private void ChangeFontSize(Tab tab)

    if (FontSize < 0)
        return;

    var tabViewGroup = (ViewGroup)tab.View;
    for (int i = 0; i < tabViewGroup.ChildCount; i++)
    
        if (tabViewGroup.GetChildAt(i) is TextView textView)
        
            textView.TextSize = FontSize;
        
    

就是这样:)

以上是关于选项卡的android字体大小的主要内容,如果未能解决你的问题,请参考以下文章

使用 android Chrome,html 选项列表会忽略我的字体大小请求

安卓的手机字体怎么放大

Android-修改TabWidget字体大小颜色及对齐

通过用户选择增加和减少 android 应用程序的字体大小

android程序中字体大小的单位是啥?

Android能用px设置字体大小吗