Android: выделенная вкладка TabWidget не читается в HTC Sense

1

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

Изображение 174551

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

Но если у вас есть HTC Sense, это выглядит так: Изображение 174551

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

Мои вопросы:

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

2) Я полагаю, что другие TabWidgets отлично смотрятся на HTC Sense, потому что в противном случае это была бы довольно большая и популярная проблема. Итак, почему моя TabWidget имеет эту проблему, а не другие.

3) Как я могу исправить эту проблему, не изменяя внешний вид на устройствах без чувства?

Как я уже сказал, я никак не настраивал 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)! Я действительно не понимаю, но сейчас я могу жить с этим.:)

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

  • 0
    Покажите нам, как вы определяете вкладки (например, setIndicator() ).
  • 0
    Добавлено определение вкладок. Я просто передаю имя вкладки, значок и содержимое, которое она должна загрузить для этой вкладки.
Теги:
colors
layout
tabwidget
htcsense

1 ответ

4
Лучший ответ

У вас есть android:targetSdkVersion, установленный в AndroidManifest.xml?

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

  • 0
    Да, я делаю! Я установил цель на 6, а minSdk на 3. Я проверю, почему именно я установил такую высокую цель, может быть, это больше не нужно (были классы, которые я специально использовал, если пользователь был на более высоком SDK, но, возможно, Мне это больше не нужно). Спасибо за указание на это, я попробую.
  • 0
    Хорошо, работает для меня! :)
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню