【问题标题】:Android: Highlighted tab of TabWidget not readable on HTC SenseAndroid:TabWidget 的突出显示选项卡在 HTC Sense 上不可读
【发布时间】:2010-09-05 21:10:58
【问题描述】:

在我的 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。

/编辑: 以下是 onCreate 方法中选项卡的定义:

th = getTabHost();
th.addTab(th.newTabSpec("shortener").setIndicator(getString(R.string.tabShortenerName),
        res.getDrawable(R.drawable.url_zip)).setContent(R.id.shortenerScrollView));

该类扩展了一个 TabActivity。

/编辑 2: 带有白底白字的设备是运行 Android 2.1 btw 的 HTC Legend。

/编辑 3: Dream3r 是对的。将 targetSdk 值更改为 4 也对我有用(之前,它被设置为 6)!我真的不明白,但我现在可以忍受。 :)

这是它现在的样子:

【问题讨论】:

  • 向我们展示您是如何定义选项卡的(例如,setIndicator())。
  • 添加了选项卡的定义。我只是传递选项卡名称、图标和它应该为此选项卡加载的内容。

标签: android layout colors tabwidget htcsense


【解决方案1】:

您的AndroidManifest.xml? 中是否设置了android:targetSdkVersion

我使用示例应用程序进行了一些测试,如果我将targetSdkVersion 设置为大于4 的值,我也会遇到同样的问题。

【讨论】:

  • 是的,我愿意!我已将目标设置为 6,将 minSdk 设置为 3。我将检查为什么我设置了如此高的目标,也许不再需要(如果用户使用更高的 SDK,我专门使用了一些类,但也许我不再需要它了)。感谢您指出这一点,我会试一试。
  • 值得注意的是,这种白底白字问题是 HTC 2.1 实现中的一个缺陷。 @dream3r 的不错的解决方法;将 targetSdkVersion 设置为 4 会导致 Android 在 2.1 设备上启用兼容包,这会用可行的东西覆盖 HTC 选项卡实现。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-29
  • 1970-01-01
  • 1970-01-01
  • 2021-07-26
相关资源
最近更新 更多