我在使用 Xamarin 时遇到了同样的问题。
这是一个显示图标但不显示文本的 hack 解决方案(看起来像 android 缺陷):
此解决方案同时显示了两者,但它破坏了我的应用程序范围的样式,这向我表明我可能会设置样式覆盖:
编辑 2013 年 10 月 10 日 - 我让它在 c# 中工作!
在java中做同样的事情应该很简单
我能够让标签显示带有代码和自定义样式的图标。见下文
tab_indicator_holo.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="@dimen/tab_host_default_height"
android:orientation="horizontal"
style="@style/TabBlood"
android:gravity="center">
<ImageView
android:id="@android:id/icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:visibility="visible"
android:contentDescription="@null" />
<TextView
android:id="@android:id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
style="@style/TabTextBlood" />
</LinearLayout>
我的活动 OnCreate:
...
var spec = this.TabHost.NewTabSpec(tag);
var drawableIcon = Resources.GetDrawable(drawableId);
View tabIndicator = LayoutInflater.From(this).Inflate(Resource.Layout.tab_indicator_holo, this.TabHost.TabWidget, false);
TextView title = tabIndicator.FindViewById<TextView>(Android.Resource.Id.Title);
ImageView img = tabIndicator.FindViewById<ImageView>(Android.Resource.Id.Icon);
title.Text = label;
img.SetImageDrawable(drawableIcon);
spec.SetIndicator(tabIndicator);
spec.SetContent(intent);
this.TabHost.AddTab(spec);