В моем приложении для Android я использую TabWidget без какой-либо специальной настройки. Я бы хотел, чтобы Android позаботился о конкретном внешнем виде, который отлично работает, если сравнить Android 1.6 с 2.1, например. Просто используя TabWidget, тот же код приводит к различным формам вкладок, потому что SDK определяет способ его рисования. Вот как это выглядит на 2.1, например:
Итак, выделенная вкладка серая, а шрифт белый, и вы можете прочитать ее достаточно хорошо.
Но если у вас есть HTC Sense, это выглядит так:
Изображение не очень хорошее, но просто поверьте мне, что это белый текст на белом фоне, который на самом деле не так легко читать...
Мои вопросы:
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)! Я действительно не понимаю, но сейчас я могу жить с этим.:)
Вот картина того, как это выглядит сейчас:
У вас есть android:targetSdkVersion
, установленный в AndroidManifest.xml?
Я сделал несколько тестов с использованием примерного приложения, и у меня такая же проблема, если я установил targetSdkVersion
значение больше, чем 4
.
setIndicator()
).