Android TabWidget in Light theme

前端 未结 4 1794
生来不讨喜
生来不讨喜 2021-02-09 17:00

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 ca

相关标签:
4条回答
  • 2021-02-09 17:08

    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/

    0 讨论(0)
  • 2021-02-09 17:11

    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.

    0 讨论(0)
  • 2021-02-09 17:13

    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.

    0 讨论(0)
  • 2021-02-09 17:20

    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);
    
    0 讨论(0)
提交回复
热议问题