我有一个针对1.5框架的应用程序,并使用默认的灯光主题。当使用具有此主题的选项卡窗口小部件时,选项卡图像几乎不可见,并且除了当前活动的选项卡之外,很难识别选项卡标题。
在默认的黑暗主题中,这些标签非常清晰,但这不是我非常满意的解决方案。我可以设置一个简单的设置,设置标签小部件以便在灯光主题中获得更好的可见性,还是我必须手动篡改图像和文本样式?
答案 0 :(得分:10)
它不漂亮,但你可以在标签活动中试试这个。
// 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/
答案 1 :(得分:2)
答案 2 :(得分:2)
通过使用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);
答案 3 :(得分:2)
解决布局中颜色/对比度问题的一种非常简单的方法:
<TabWidget
android:id="@android:id/tabs"
android:background="#FF000000"
android:padding="2dp"
这会将TabWidget的背景设置为黑色并添加一点填充,以便与黑色背景上的选项卡形成对比。它并不完美,但适用于1.5,2.2,浅色和深色主题。