选项卡的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字体大小的主要内容,如果未能解决你的问题,请参考以下文章