我有一个针对 1.5 框架并使用默认浅色主题的应用程序。使用带有此主题的选项卡小部件时,选项卡图像几乎不可见,并且除了当前活动的选项卡外,几乎无法辨别选项卡标题。
在默认的深色主题中,这些选项卡非常清晰,但这不是我非常满意的解决方案。有没有我可以设置的简单设置,设置选项卡小部件以更好地显示浅色主题,或者我是否必须手动篡改图像和文本样式?
它不漂亮,但你可以在你的标签活动中试试这个。
// light theme support
final TabHost tabHost = getTabHost();
tabHost.setBackgroundColor(Color.WHITE);
tabHost.getTabWidget().setBackgroundColor(Color.BLACK);
// hack to set font size
LinearLayout ll = (LinearLayout) tabHost.getChildAt(0);
TabWidget tw = (TabWidget) ll.getChildAt(0);
// first tab
RelativeLayout rllf = (RelativeLayout) tw.getChildAt(0);
lf = (TextView) rllf.getChildAt(1);
lf.setTextSize(21);
lf.setPadding(0, 0, 0, 6);
// second tab
RelativeLayout rlrf = (RelativeLayout) tw.getChildAt(1);
rf = (TextView) rlrf.getChildAt(1);
rf.setTextSize(21);
rf.setPadding(0, 0, 0, 6);
/res/values/colors.xml 应该有
<resources>
<drawable name="black">#ff000000</drawable>
<drawable name="white">#ffffffff</drawable>
</resources>
AndroidManiest.xml 应该有
<application android:theme="@android:style/Theme.Light">
如果您想做更疯狂的事情,请尝试http://ezmobile.wordpress.com/2009/02/02/customized-android-tabs/
通过使用 hierarchyviewer 工具,我在选项卡中找到了 textview 的 android id。更改文本属性(包括颜色)的更好方法是执行以下操作...
TabWidget tw = (TabWidget)tabHost.findViewById(android.R.id.tabs);
View tabView = tw.getChildTabViewAt(0);
TextView tv = (TextView)tabView.findViewById(android.R.id.title);
tv.setTextSize(20);
解决布局中颜色/对比度问题的一种非常简单的方法:
<TabWidget
android:id="@android:id/tabs"
android:background="#FF000000"
android:padding="2dp"
这会将 TabWidget 的背景设置为黑色并添加一点填充,以便您与黑色背景下的选项卡形成对比。它并不完美,但适用于 1.5、2.2、明暗主题。