Вопрос

У меня есть приложение, ориентированное на платформу 1.5 и использующее светлую тему по умолчанию.При использовании виджета вкладок с этой темой изображения вкладок едва видны, а названия вкладок совершенно невозможно различить, за исключением активной в данный момент вкладки.

В темной теме по умолчанию эти вкладки отображаются довольно четко, но это не то решение, которое меня бы очень порадовало.Могу ли я установить простую настройку, которая настраивает виджет вкладок для лучшей видимости в светлых темах, или мне придется вручную изменять изображения и стили текста?

Это было полезно?

Решение

это некрасиво, но вы можете попробовать это в своей вкладке.

// light theme support
final TabHost tabHost = getTabHost();
tabHost.setBackgroundColor(Color.WHITE);
tabHost.getTabWidget().setBackgroundColor(Color.BLACK);

// hack to set font size
LinearLayout ll = (LinearLayout) tabHost.getChildAt(0);
TabWidget tw = (TabWidget) ll.getChildAt(0);

// first tab
RelativeLayout rllf = (RelativeLayout) tw.getChildAt(0);
lf = (TextView) rllf.getChildAt(1);
lf.setTextSize(21);
lf.setPadding(0, 0, 0, 6);

// second tab
RelativeLayout rlrf = (RelativeLayout) tw.getChildAt(1);
rf = (TextView) rlrf.getChildAt(1);
rf.setTextSize(21);
rf.setPadding(0, 0, 0, 6);

/res/values/colors.xml должен иметь

<resources>
    <drawable name="black">#ff000000</drawable>
    <drawable name="white">#ffffffff</drawable>
</resources>

AndroidManiest.xml должен иметь

<application android:theme="@android:style/Theme.Light">

если хочешь сделать что-то более безумное, попробуй http://ezmobile.wordpress.com/2009/02/02/customized-android-tabs/

Другие советы

Это ошибка;можете ли вы сообщить об этом в трекер проблем?

AFAIK, ваш обходной путь настройки стилей текста и изображений звучит правильно.

Также примечательно, что виджет вкладок в версии 2.0 не имеет облегченного стиля.

Используя инструмент просмотра иерархии, я нашел идентификатор Android для текстового представления на вкладке.Лучший способ изменить свойства текста (включая цвет) — сделать следующее...

TabWidget tw = (TabWidget)tabHost.findViewById(android.R.id.tabs);
View tabView = tw.getChildTabViewAt(0);
TextView tv = (TextView)tabView.findViewById(android.R.id.title);
tv.setTextSize(20);

Очень простой способ решить проблему цвета/контраста в макете:

<TabWidget
   android:id="@android:id/tabs"
   android:background="#FF000000"
   android:padding="2dp"

Это устанавливает черный фон TabWidget и добавляет немного отступов, чтобы вы могли контрастировать с вкладками на черном фоне.Он не идеален, но работает в 1.5, 2.2, светлой и темной теме.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top