在android中更改选项卡中的文本大小
Posted
技术标签:
【中文标题】在android中更改选项卡中的文本大小【英文标题】:Change the text size in tab in android 【发布时间】:2013-10-26 20:23:56 【问题描述】:我一直面临标签栏中文字大小的问题。下图,
这是我的代码,
MainActivity.java
public class MainActivity extends Activity implements OnTabChangeListener, OnPageChangeListener
private TabHost tabHost;
private ViewPager pager;
@Override
public void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tabHost = (TabHost)findViewById(android.R.id.tabhost);
pager = (ViewPager) findViewById(R.id.pager);
tabHost.setup();
TabWidget tabwidget=tabHost.getTabWidget();
TabSpec spec = tabHost.newTabSpec("tab1");
spec.setContent(R.id.tab1);
spec.setIndicator("Check In");
tabHost.addTab(spec);
spec = tabHost.newTabSpec("tab2");
spec.setContent(R.id.tab2);
spec.setIndicator("Buddies");
tabHost.addTab(spec);
spec = tabHost.newTabSpec("tab3");
spec.setContent(R.id.tab3);
spec.setIndicator("Recommendation");
tabHost.addTab(spec);
spec = tabHost.newTabSpec("tab4");
spec.setContent(R.id.tab4);
spec.setIndicator("Feed");
tabHost.addTab(spec);
spec = tabHost.newTabSpec("tab5");
spec.setContent(R.id.tab5);
spec.setIndicator("Last");
tabHost.addTab(spec);
pager.setAdapter(new MyPagerAdapter(this));
pager.setOnPageChangeListener(this);
tabHost.setOnTabChangedListener(this);
@Override
public void onTabChanged(String tabId)
int pageNumber = 0;
if(tabId.equals("tab1"))
pageNumber = 0;
else if(tabId.equals("tab2"))
pageNumber = 1;
else if(tabId.equals("tab3"))
pageNumber = 2;
else if(tabId.equals("tab4"))
pageNumber = 3;
else if(tabId.equals("tab5"))
pageNumber = 4;
else
pageNumber = 0;
pager.setCurrentItem(pageNumber);
@Override
public void onPageSelected(int pageNumber)
tabHost.setCurrentTab(pageNumber);
@Override
public void onPageScrollStateChanged(int arg0)
@Override
public void onPageScrolled(int arg0, float arg1, int arg2)
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/tabhost"
android:layout_
android:layout_ >
<LinearLayout
android:layout_
android:layout_
android:orientation="vertical" >
<TabWidget
android:id="@android:id/tabs"
android:layout_
android:layout_ />
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_
android:layout_ >
<FrameLayout
android:id="@+id/tab1"
android:layout_
android:layout_
android:visibility="gone" />
<FrameLayout
android:id="@+id/tab2"
android:layout_
android:layout_
android:visibility="gone" />
<FrameLayout
android:id="@+id/tab3"
android:layout_
android:layout_
android:visibility="gone" />
<FrameLayout
android:id="@+id/tab4"
android:layout_
android:layout_
android:visibility="gone" />
<FrameLayout
android:id="@+id/tab5"
android:layout_
android:layout_
android:visibility="gone" />
</FrameLayout>
<android.support.v4.view.ViewPager
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/pager"
android:layout_
android:layout_ />
</LinearLayout>
</TabHost>
我想在每个选项卡中设置整个文本,我该怎么做?
我一直在尝试此代码来更改文本大小并获得此结果,
代码
TextView x = (TextView) tabHost.getTabWidget().getChildAt(0).findViewById(android.R.id.title);
x.setTextSize(10);
tabHost.getTabWidget().getChildAt(0).getLayoutParams().width = 100;
TextView x1 = (TextView) tabHost.getTabWidget().getChildAt(1).findViewById(android.R.id.title);
x1.setTextSize(10);
tabHost.getTabWidget().getChildAt(1).getLayoutParams().width = 90;
TextView x2 = (TextView) tabHost.getTabWidget().getChildAt(2).findViewById(android.R.id.title);
x2.setTextSize(10);
tabHost.getTabWidget().getChildAt(2).getLayoutParams().width = 100;
TextView x3 = (TextView) tabHost.getTabWidget().getChildAt(3).findViewById(android.R.id.title);
x3.setTextSize(10);
tabHost.getTabWidget().getChildAt(3).getLayoutParams().width = 40;
TextView x4 = (TextView) tabHost.getTabWidget().getChildAt(4).findViewById(android.R.id.title);
x4.setTextSize(10);
tabHost.getTabWidget().getChildAt(4).getLayoutParams().width = 40;
结果图片
但我希望输出为这张图片
根据上图,我的标签小部件应该是可移动的,我该怎么做?
【问题讨论】:
您是否尝试从库中扩展 shouldExpand? github.com/LordZoltan/PagerSlidingTabStrip.Net/wiki/… 【参考方案1】:TextView x = (TextView) tabHost.getTabWidget().getChildAt(0).findViewById(android.R.id.title);
x.setTextSize(25);
更多详情请参考以下链接
Change text size on tabHost
How to change the font size of tabhost in android
【讨论】:
如何改变每个tab的宽度? tabHost.getTabWidget().getChildAt(0).getLayoutParams().width = 50; BlueG... 检查我编辑的问题,我想按照我的描述输出。【参考方案2】:您可以改用 TabLayout 和 Viewpager,并将 tabMode 设置为可滚动,参见下面的代码:
<android.support.design.widget.TabLayout
android:id="@+id/tabs"
android:layout_
android:layout_
app:tabGravity="center"
app:tabMode="scrollable" />
【讨论】:
【参考方案3】: app:tabMode="scrollable"
app:tabGravity="fill"
在你的标签xml中使用这一行,它会做到的。
【讨论】:
【参考方案4】:您还可以自定义标签的文本和背景。请参阅此博客以获取非常好的 tutorial 以了解如何操作。
【讨论】:
【参考方案5】:简单易做只需将样式添加到您的 xml 文件中,声明您想要的大小。
<style name="CustomTheme" parent="@android:style/Theme">
<item name="android:tabWidgetStyle">@style/CustomTabWidget</item>
</style>
<style name="CustomTabWidget" parent="@android:style/Widget.TabWidget">
<item name="android:textAppearance">@style/CustomTabWidgetText</item>
</style>
<style name="CustomTabWidgetText"
parent="@android:style/TextAppearance.Widget.TabWidget">
<item name="android:textSize">100sp</item>
<item name="android:textStyle">**strong text**</item>
</style>
不要忘记在 manifast 文件中添加带有样式名称的主题。
【讨论】:
【参考方案6】:<android.support.design.widget.TabLayout
android:id="@+id/tabs"
android:layout_
android:layout_
app:tabMode="scrollable"/>
使用 app:tabMode="scrollable"
【讨论】:
【参考方案7】:只需将 TabLayout 放在 HorizontalScrollView 中即可:
<HorizontalScrollView
android:layout_
android:layout_>
<android.support.design.widget.TabLayout
android:id="@+id/tabs"
android:layout_
android:layout_ />
</HorizontalScrollView>
【讨论】:
【参考方案8】:<style name="MyTabLayout" parent="Base.Widget.Design.TabLayout">
<item name="tabTextAppearance">@style/MyTabTextAppearance</item>
<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>
<com.google.android.material.tabs.TabLayout
android:id="@+id/tab_layout"
android:layout_
android:layout_
android:layout_gravity="center_horizontal"
android:layout_marginTop="@dimen/margin_15"
android:background="@android:color/transparent"
android:nestedScrollingEnabled="true"
android:scrollbarThumbVertical="@color/white"
android:textAlignment="center"
app:tabGravity="center"
app:tabIndicatorAnimationDuration="1"
app:tabIndicatorColor="@color/white"
app:tabMode="scrollable"
app:tabSelectedTextColor="@color/white"
app:tabTextAppearance="@style/MyTabTextAppearance"
app:tabTextColor="@color/white" />
tabLayout.addTab(tabLayout.newTab().setText(R.string.casa))
tabLayout.addTab(tabLayout.newTab().setText(R.string.fdr_dps))
tabLayout.addTab(tabLayout.newTab().setText(R.string.loan))
你试试吧,我希望它有效
【讨论】:
【参考方案9】:<TabHost
android:id="@+id/tabhost"
android:layout_
android:layout_
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true">
<LinearLayout
android:layout_
android:layout_
android:orientation="vertical" >
<TabWidget
android:id="@android:id/tabs"
android:layout_
android:layout_
>
</TabWidget>
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_
android:layout_
android:layout_weight="0" />
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_
android:layout_
/>
</LinearLayout>
</TabHost>
代码:
for(int i=0;i<tabhost.getTabWidget().getChildCount();i++)
TextView tv = (TextView) tabhost.getTabWidget().getChildAt(i).findViewById(android.R.id.title);
tv.setTextColor(Color.parseColor(SM.getTheme_colour()));
tv.setTypeface(font_k);
此代码适用于 tabhost 更改文本颜色、字体(字体样式)以及文本大小。
【讨论】:
以上是关于在android中更改选项卡中的文本大小的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Android 代码中的 TabLayout 更改选定的选项卡文本颜色?
Angular Material Tab : 如果当前选项卡中的表单脏了,则防止 mat-tab-group 的选项卡更改