1

在我的 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)!我真的不明白,但我现在可以忍受。:)

这是它现在的样子: 替代文字

4

1 回答 1

4

你有没有android:targetSdkVersion在你的AndroidManifest.xml?

我使用示例应用程序进行了一些测试,如果我将targetSdkVersion值设置为大于4.

于 2010-09-15T21:18:18.867 回答