Обновление значков вкладки Android

в python 3 вы можете сделать это ...

>>> s = 'bioinform'
>>> s
'bioinform'
>>> w = list(s)
>>> w
['b', 'i', 'o', 'i', 'n', 'f', 'o', 'r', 'm']
>>> 

, но если вы дадите список, любое значение даст вам ошибку, поэтому вы должны перезапустить IDLE

40
задан Eng.Fouad 28 February 2013 в 00:13
поделиться

4 ответа

Короткий ответ, Вы ничего не пропускаете. SDK Android не обеспечивает прямой метод изменить индикатор TabHost после того, как это было создано. Эти TabSpec только используется для создания вкладки, таким образом изменяясь TabSpec после того, как факт не будет иметь никакого эффекта.

я думаю, что существует обходное решение, все же. Звоните mTabs.getTabWidget() для получения TabWidget объект. Это - просто подкласс ViewGroup, таким образом, можно звонить getChildCount() и getChildAt() для доступа к отдельным вкладкам в TabWidget. Каждой из этих вкладок является также Представление, и в случае вкладки с графическим индикатором и текстовой меткой, это - почти наверняка некоторый другой ViewGroup (возможно, LinearLayout, но это не имеет значения), который содержит ImageView и TextView. Таким образом с небольшой игрой с отладчиком или Log.i, необходимо быть в состоянии выяснить рецепт, чтобы добраться ImageView и изменить его непосредственно.

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

33
ответ дан Mayank 27 November 2019 в 01:26
поделиться

Только для подтверждения ответа dominics вот его решение в коде (который на самом деле работает):

tabHost.setOnTabChangedListener(new OnTabChangeListener() {
    public void onTabChanged(String tabId) {
        if (TAB_MAP.equals(tabId)) {
            ImageView iv = (ImageView) tabHost.getTabWidget().getChildAt(0).findViewById(android.R.id.icon);
            iv.setImageDrawable(getResources().getDrawable(R.drawable.tab_map_black));
            iv = (ImageView) tabHost.getTabWidget().getChildAt(1).findViewById(android.R.id.icon);
            iv.setImageDrawable(getResources().getDrawable(R.drawable.tab_list_white));
        } else if (TAB_LIST.equals(tabId)) {
            ImageView iv = (ImageView) tabHost.getTabWidget().getChildAt(0).findViewById(android.R.id.icon);
            iv.setImageDrawable(getResources().getDrawable(R.drawable.tab_map_white));
            iv = (ImageView) tabHost.getTabWidget().getChildAt(1).findViewById(android.R.id.icon);
            iv.setImageDrawable(getResources().getDrawable(R.drawable.tab_list_black));
        }
    }
});

, Конечно, это не полируется вообще, и использующий те прямые индексы в getChildAt () не хорошо вообще...

30
ответ дан Jared Burrows 27 November 2019 в 01:26
поделиться

Могло бы быть немного поздно, но Вы могли бы хотеть смотреть на этот поток

http://groups.google.com/group/android-developers/browse_thread/thread/ef3bdebcb715b385

10
ответ дан Pang 27 November 2019 в 01:26
поделиться

См. мое сообщение с примером кода относительно Специализированные Вкладки .

Android

Спасибо Spct

6
ответ дан 27 November 2019 в 01:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: