在我的 Android 应用程序中,我使用 TabWidget 没有任何特殊定制。我希望 Android 能够处理特定的外观,例如,如果您将 Android 1.6 与 2.1 进行比较,它就可以正常工作。通过仅使用 TabWidget,相同的代码会导致不同形式的选项卡,因为 SDK 定义了如何绘制它。例如,它在 2.1 上的外观如下:
因此,突出显示的选项卡是灰色的,字体是白色的,你可以很好地阅读它。
但是,如果你有 HTC Sense,它看起来像这样:
图片不是那么好,但请相信我,它是白色背景上的白色文字,并不是那么容易阅读......
我的问题是:
1)为什么Android会创建一个白底白字的TabWidget?我从未定义过文本颜色或背景颜色,因此系统应该选择合理的颜色。
2) 我假设其他 TabWidgets 在 HTC Sense 上看起来还不错,否则这将是一个相当大且受欢迎的问题。那么为什么我的 TabWidget 有这个问题而不是其他问题。
3) 如何在不改变非 Sense 设备外观的情况下解决此问题?
正如我所说,我没有以任何方式自定义 TabWidget。这是我的定义:
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/tabhost"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@android:color/black"
>
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TabWidget
android:id="@android:id/tabs"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="0dp"
>
<ScrollView
android:id="@+id/shortenerScrollView"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:background="@android:color/black"
android:fadingEdge="horizontal"
>
因此,除了将黑色定义为我的应用程序的一般背景颜色之外,没有定义颜色或样式。唯一的例外可能是我为 TabHost 和 TabWidget 使用标准的 Android id。
/Edit:这是 onCreate 方法中选项卡的定义:
th = getTabHost();
th.addTab(th.newTabSpec("shortener").setIndicator(getString(R.string.tabShortenerName),
res.getDrawable(R.drawable.url_zip)).setContent(R.id.shortenerScrollView));
该类扩展了一个 TabActivity。
/Edit 2:出现白底白字的设备是运行 Android 2.1 btw 的 HTC Legend。
/编辑 3:dream3r 是对的。将 targetSdk 值更改为 4 也对我有用(之前,它被设置为 6)!我真的不明白,但我现在可以忍受。:)
这是它现在的样子: