Android TabWidget в светлой теме - PullRequest
6 голосов
/ 15 декабря 2009

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

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

Ответы [ 4 ]

10 голосов
/ 19 декабря 2009

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

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

2 голосов
/ 07 мая 2011

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

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

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

2 голосов
/ 28 декабря 2010

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

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);
2 голосов
/ 15 декабря 2009

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

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

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

...