Android TabWidget in Light theme

倾然丶 夕夏残阳落幕 提交于 2019-12-04 12:00:07

问题


I have an application that targets the 1.5 framework and uses the default light theme. When using a tab widget with this theme, the tab images are barely visible, and the tab captions are quite impossible to discern, except for the currently active tab.

In the default dark theme these tabs come through quite clearly, but this is not a solution I'd be very happy with. Is there a simple setting I can set, that sets up the tab widget for better visibility in light themes, or would I have to tamper with images and text styles manually?


回答1:


it's not pretty, but you can try this in your tab activity.

// 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 should have

<resources>
    <drawable name="black">#ff000000</drawable>
    <drawable name="white">#ffffffff</drawable>
</resources>

AndroidManiest.xml should have

<application android:theme="@android:style/Theme.Light">

if you want to do something crazier, try http://ezmobile.wordpress.com/2009/02/02/customized-android-tabs/




回答2:


This is a bug; can you report it in the the issue tracker?

AFAIK, your workaround of customizing the text and image styles sounds right.

It's also noteworthy that the tab widget in 2.0 doesn't seem to have a light style.




回答3:


By using the hierarchyviewer tool I found the android id for the textview in the tab. A better way to change the text properties (including color) is by doing the following...

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);



回答4:


A very simple way to solve the color/contrast problem in the layout:

<TabWidget
   android:id="@android:id/tabs"
   android:background="#FF000000"
   android:padding="2dp"

This sets the background of the TabWidget to black and adds a little padding so you have contrast with the tabs against the black background. Its not perfect, but works in 1.5, 2.2, light and dark theme.



来源:https://stackoverflow.com/questions/1906314/android-tabwidget-in-light-theme

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!