Android: выделенная вкладка TabWidget не читается в HTC Sense - PullRequest
1 голос
/ 06 сентября 2010

В своем приложении для Android я использую TabWidget без каких-либо специальных настроек. Я бы хотел, чтобы Android позаботился о конкретном внешнем виде, который отлично работает, если сравнить Android 1.6 с 2.1, например. Просто используя TabWidget один и тот же код приводит к различным формам вкладок, потому что SDK определяет, как его рисовать. Вот как это выглядит на 2.1, например:

alt text

Итак, выделенная вкладка серого цвета, а шрифт - белый, и вы можете прочитать ее довольно хорошо.

Но если у вас HTC Sense, это выглядит так: alt text

Картинка не очень хорошая, но поверьте мне, это белый текст на белом фоне, который на самом деле не так просто читать ...

Мои вопросы:

1) Почему Android создает TabWidget с белым на белый текст? Я никогда не определял ни цвет текста, ни цвет фона, поэтому система должна выбирать разумные цвета.

2) Я предполагаю, что другие TabWidget прекрасно выглядят в 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"
            >

Таким образом, помимо определения черного цвета в качестве основного цвета фона приложения, здесь нет определения цвета или стиля. Единственным исключением может быть то, что я использую стандартные идентификаторы Android для TabHost и TabWidget.

/ 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.

/ Правка 2: Устройство с белыми надписями - устройство HTC Legend под управлением Android 2.1.

/ Правка 3: Dream3r был прав. Изменение значения targetSdk на 4 также помогло мне (раньше оно было установлено на 6)! Я действительно не понимаю, но я могу жить с этим сейчас. :)

Вот изображение того, как оно выглядит сейчас: alt text

1 Ответ

4 голосов
/ 16 сентября 2010

У вас есть android:targetSdkVersion в вашем AndroidManifest.xml?

Я провел некоторый тест с использованием примера приложения, и у меня возникла та же проблема, если я установил targetSdkVersion на значение больше 4.

...