【发布时间】:2010-10-06 23:24:44
【问题描述】:
任何人都知道 facebook 是如何做到这一点的:
据我所知,我们无法更改 tabhost 的高度。我猜他们将“Frank Cho”视图放在 tabhost 上,让它看起来更短,但我可能错了。有谁知道怎么回事?
【问题讨论】:
标签: android height customization android-tabhost
任何人都知道 facebook 是如何做到这一点的:
据我所知,我们无法更改 tabhost 的高度。我猜他们将“Frank Cho”视图放在 tabhost 上,让它看起来更短,但我可能错了。有谁知道怎么回事?
【问题讨论】:
标签: android height customization android-tabhost
您实际上可以拥有自定义外观的标签小部件。您需要将选项卡指示器设置为一些自定义布局(使用您的可绘制对象),您应该一切顺利。
这是一个半示例:
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)
【讨论】:
其他人有我认为正确的答案,但由于某种原因将其删除...
有问题的高度不是TabHost的高度,而是TabWidget的高度。
尝试使用setIndicator() 的版本,它采用View 而不仅仅是String 或String 加上可绘制资源。虽然我还没有玩过这个,但我的理解是它很好地解决了这个问题。
不过,请注意,不要以难以点击的标签结束。
【讨论】: