姜饼与ICS及以上的Tabwidget分隔

时间:2013-04-17 05:05:31

标签: android tabwidget

我使用TabWidget创建了一个带有片段的标签,每个标签都有自定义布局。除了一件事,一切看起来都很好看。在ICS及以上,它看起来如下:

enter image description here

但是在Gingerbread上它看起来如下:

enter image description here

正如你可以清楚地看到的,在姜饼中,分隔物不见了。

所以我有两个问题。首先,无论如何我可以在姜饼上出现分隔符吗?我已经尝试了stackoverflow的各种建议,但他们只是不想显示。

其次,无论如何都要定制分隔线的外观?我尝试过使用:

setDividerDrawable() 

图像适用于ICS,但我在Gingerbread中得到一个空指针异常。
(更新:关于粗体问题,我刚发现一些非常烦人的东西。似乎Gingerbread和ICS +处理分隔符的方式不同。我在TabWidget.getChildAt()调用时得到Null指针异常。当设置分隔符时,姜饼分隔符被视为包含在其中的Tabwidget的子视图,但在ICS +中它不是(或者它被忽略)。因此,我用于getChildAt的索引在Gingerbread中是完全错误的,因为tabwidget看到5儿童(3个标签和2个分隔符)但在ICS中它只能看到3个(只有3个标签))

此外,我已尝试设置分隔线的颜色,但它们似乎根本不起作用。

以下是标签的设置方式:

/**
 * Setup the tab host.
 */
private void initialiseTabHost(Bundle args) {
    this.tabHost = (TabHost) findViewById(android.R.id.tabhost);
    this.tabHost.setup();
    TabInfo tabInfo = null;
    addTab( this,
            this.tabHost,
            this.tabHost.newTabSpec(TAB_DASHBOARD).setIndicator(LayoutInflater.from(getApplicationContext())
                    .inflate(R.layout.tabview_dashboard, null)),
            (tabInfo = new TabInfo(TAB_DASHBOARD, MonitoringTab.class.getName(), args)));
    this.mapTabInfo.put(tabInfo.tag, tabInfo);
    //create alert list and alert details fragments, add alert list to the tab bar
    tabInfo = new TabInfo(TAB_ALERT_DETAILS, AlertDetailTab.class.getName(), args);
    this.mapTabInfo.put(tabInfo.tag, tabInfo);
    tabInfo = new TabInfo(TAB_ALERTS, AlertListTab.class.getName(), args);
    this.mapTabInfo.put(tabInfo.tag, tabInfo);
    addTab( this,
            this.tabHost,
            this.tabHost.newTabSpec(TAB_ALERT_SHOWING).setIndicator(LayoutInflater.from(getApplicationContext())
                    .inflate(R.layout.tabview_alerts, null)),
            tabInfo);
    this.mapTabInfo.put(TAB_ALERT_SHOWING, tabInfo);

    addTab( this,
            this.tabHost,
            this.tabHost.newTabSpec(TAB_ERRORQUEUE).setIndicator(LayoutInflater.from(getApplicationContext())
                    .inflate(R.layout.tabview_errorqueue, null)),
            (tabInfo = new TabInfo(TAB_ERRORQUEUE, ErrorMessagesTab.class.getName(), args)));
    this.mapTabInfo.put(tabInfo.tag, tabInfo);
    // Default to first tab
    onTabChanged(TAB_DASHBOARD);
    this.tabHost.setOnTabChangedListener(this);
}

0 个答案:

没有答案