Light主题中的Android TabWidget

时间:2009-12-15 09:52:31

标签: android themes tabwidget

我有一个针对1.5框架的应用程序,并使用默认的灯光主题。当使用具有此主题的选项卡窗口小部件时,选项卡图像几乎不可见,并且除了当前活动的选项卡之外,很难识别选项卡标题。

在默认的黑暗主题中,这些标签非常清晰,但这不是我非常满意的解决方案。我可以设置一个简单的设置,设置标签小部件以便在灯光主题中获得更好的可见性,还是我必须手动篡改图像和文本样式?

4 个答案:

答案 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)

这是一个错误;你可以在the issue tracker中报告吗?

AFAIK,您自定义文本和图像样式的解决方法听起来不错。

值得注意的是,2.0中的标签小部件似乎没有轻量级风格。

答案 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,浅色和深色主题。