Android: настройка вкладок в состоянии: как сделать селектор доступным
Я знаю, как поместить значок на каждую вкладку, это не проблема. Я также столкнулся с этим:
[Переполнение потока стека на почти такую же вещь] [1]
Я следил за одной из ссылок с этого вопроса и нашел [это] [2]
В значительной степени он сказал, что использует селектор, определенный в XML, уверен, сделал это. Но нет никакого идентификатора, связанного с этим, поэтому я не уверен, как получить функцию селектора как drawable, чтобы я мог использовать его как значок для вкладок. Может быть, я ошибаюсь. Но это то, что у меня есть, и, очевидно, что-то не хватает.
<selector
android:id="@+id/myselector"
xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Non focused states -->
<item
android:state_focused="false"
android:state_selected="false"
android:state_pressed="false"
android:drawable="@drawable/darklogo" />
<item
android:state_focused="false"
android:state_selected="true"
android:state_pressed="false"
android:drawable="@drawable/lightlogo" />
<!-- Focused states -->
<item
android:state_focused="true"
android:state_selected="false"
android:state_pressed="false"
android:drawable="@drawable/lightlogo" />
<item
android:state_focused="true"
android:state_selected="true"
android:state_pressed="false"
android:drawable="@drawable/lightlogo" />
<!-- Pressed -->
<item
android:state_pressed="true"
android:drawable="@drawable/lightlogo" />
</selector>
В моем коде вкладка примера создается с помощью:
host.addTab(host.newTabSpec("three")
.setIndicator("map",drawables)
.setContent(new Intent(this, Map.class)));
Прямо сейчас drawable - это просто ссылка на ресурс с возможностью рисования. Как сделать селектор доступным?
Это мой вопрос [1]: Обновление значков Android Tab [2]: http://groups.google.com/group/android-evelopers/browse_thread/thread/ef3bdebcb715b385
Ответы
Ответ 1
XML, который вы здесь указали, - это способ определения drawable, который позволяет вставлять оператор case. Он отображает различные возможности в зависимости от состояния представления, которому он назначен. Вы можете сохранить его как xml файл в папке res/drawable
вашего проекта (например, tabselector.xml
).
Чтобы использовать его для Tabhost, вам нужно построить TabActivity, как обычно (как показано в этом примере учебника).
Затем, когда вы добавляете каждую вкладку к хосту, вы указываете tabselector
в качестве индикатора, как показано ниже для "TAB 1".
Drawable mySelector = getResources().getDrawable(R.drawable.tabselector);
mTabHost.addTab(mTabHost.newTabSpec("tab_test1").setIndicator("TAB 1", mySelector).setContent(R.id.textview1));
mTabHost.addTab(mTabHost.newTabSpec("tab_test2").setIndicator("TAB 2").setContent(R.id.textview2));
Примечание. Вы не можете изменить цвет фона вкладки за значками в этой точке.
Ответ 2
Вы можете использовать View как индикатор, таким образом вы можете настроить его так, как вы пожелаете.
mTabHost.addTab(mTabHost.newTabSpec("tab_test1").setIndicator(View MyView).setContent(R.id.textview1));
mTabHost.addTab(mTabHost.newTabSpec("tab_test2").setIndicator("TAB 2").setContent(R.id.textview2));
Первая вкладка будет использовать вид в качестве индикатора, а второй - CharSequence. Посмотрите на фактический класс TabSpec (http://developer.android.com/reference/android/widget/TabHost.TabSpec.html).