0

任何人都知道facebook是如何做到这一点的:



替代文字



据我所知,我们无法更改 tabhost 的高度。我猜他们将“Frank Cho”视图放在标签主机上,使其看起来更短,但我可能错了。有谁知道发生了什么?

4

2 回答 2

3

您实际上可以拥有自定义外观的选项卡小部件。您需要将选项卡指示器设置为一些自定义布局(使用您的可绘制对象),您应该一切顺利。

这是一个半示例:

final TabHost host = getTabHost();

final TextView indicator = (TextView) getLayoutInflater().inflate(
                            R.layout.tab_indicator,
                            getTabWidget(), false);
indicator.setText("Tab title");

host.addTab(host.newTabSpec("The tab tag")
            .setIndicator(indicator)
            .setContent([put your content here]));
}

tab_indicator 布局可能如下所示:

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/tab_label"
    android:layout_width="0dip"
    android:layout_height="fill_parent"
    android:layout_weight="1"
    android:gravity="center"
    android:textSize="14sp"
    android:textStyle="bold"
    android:minHeight="38dp"
    android:background="@drawable/minitab" />

minitab drawable 是一个可绘制项目选择器(因此您需要有一个用于选中、默认、按下和未选中的图像)。facebook 应用程序为默认选项卡使用了一些白色可绘制图像,为未选择的选项卡使用了蓝色渐变可绘制图像。

查看 Google IO Schedule 应用程序以获取完整的工作示例:http ://code.google.com/p/iosched/ (特别是 TrackDetailActivity.java)

于 2010-10-07T00:14:36.153 回答
2

其他人有我认为正确的答案,但由于某种原因将其删除...

有问题的高度不是 的TabHost,而是 的TabWidget

尝试使用它的版本,setIndicator()View不仅仅是一个StringString加上可绘制资源。虽然我还没有玩过这个,但我的理解是它很好地解决了这个问题。

不过要小心,不要以太难点击的标签结束。

于 2010-10-07T00:18:03.477 回答