我读过这个:
Android – customizing actionbar sherlock tabs
还有更多链接,我已经知道StackedBackground是什么,什么是Background,但是我找不到如何从Tabs中删除所有Caps,并获得常规字体,或者更改操作栏选项卡中的字体大小.
除此之外,我想改变我的蓝色下划线的颜色,如果我使用9个补丁图形,我得到类似的情况,在上面的链接,我得到我的行下面的文本,但不在下面的标签底部,原来的蓝线仍然有两条线.
到目前为止,我有这个,但我尝试了文字大小和各种颜色,但没有:
<style name="CustomActivityTheme" parent="@android:style/Theme.Holo.Light"> <item name="android:actionBarStyle">@style/MyActionBar</item> <item name="android:actionBarTabTextStyle">@style/MyActionBar</item> </style> <style name="MyActionBar" parent="@android:style/Widget.Holo.ActionBar"> <item name="android:background">@drawable/grey</item> <item name="android:backgroundStacked">@drawable/ab_transparent_example</item> <item name="android:textAllCaps">false</item> <item name="android:textSize">10dp</item> </style>
编辑:
我只是想出了我可以使用“android:actionBarTabTextStyle”删除所有的帽子,但它现在需要从“MyActionBar”的背景颜色…所以如何在一些层次结构中设置actionBarTabTextStyle和actionBarStyle列表,该文本缩小而不是在大写,但是它不是来自“MyActionBar”样式的背景.
编辑2:
我已经尝试了更多的9个图像,它看起来很丑,但我不能摆脱蓝线…
解决方法
我知道这是在以前被问到的,但是我花了一段时间来尝试整理这个,所以这是任何人谁发现这个问题,仍然想知道答案.
首先使用这个xml文件:tab_title.xml
<TextView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/action_custom_title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="My Custom title" android:textColor="#fff" android:textSize="18sp" android:paddingTop="5dp" />
然后在实例化ActionBar的类中,使用此代码设置每个选项卡上的文本. (此示例正在使用ActionBarSherlock.)
ActionBar bar = getSupportActionBar(); bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); String[] tabNames = {"Tab 1","Tab 2","Tab 3"}; for(int i = 0; i<bar.getTabCount(); i++){ LayoutInflater inflater = LayoutInflater.from(this); View customView = inflater.inflate(R.layout.tab_title,null); TextView titleTV = (TextView) customView.findViewById(R.id.action_custom_title); titleTV.setText(tabNames[i]); //Here you can also add any other styling you want. bar.getTabAt(i).setCustomView(customView); }
希望这有助于任何像我这样有麻烦的人.
// update 1/6/2015
如果您在Android M预览中使用TabLayout,并且您想要更改字体,则必须添加一个新的for循环到以前的解决方案,如下所示:
private void changeTabsFont() { ViewGroup vg = (ViewGroup) tabLayout.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.getInstance().getTypeFace(),Typeface.NORMAL); } } } }