В приложении Android (min sdk 11, target sdk 18) класс, который расширяет фрагмент, должен создавать вкладки TabHost (TabSpec) с одной меткой и одним значком. Но ...Являются ли метки и значок взаимоисключающими в TabHost TabSpec setIndicator?
TabSpec ts1;
// if the label is set to "Home", the label is displayed but not the image
ts1 = tab_host.newTabSpec("TAB_ONE").setIndicator("Home", getActivity().getResources().getDrawable(R.drawable.ic_tabone)).setContent(R.id.edit_species_tab);
// if the label is null or empty, the image is displayed
ts1 = tab_host.newTabSpec("TAB_ONE").setIndicator(null, getActivity().getResources().getDrawable(R.drawable.ic_tabone)).setContent(R.id.edit_species_tab);
Насколько я могу видеть documentation не говоря уже о том, что метка и значок являются взаимоисключающими.
Сначала я думал, что ярлык имеет сплошной цвет фона, скрывающий значок, но это не тот случай. На самом деле, когда я установить фон TabHost я могу видеть, что этикетка является прозрачным:
tab_host.getTabWidget().setBackgroundResource(R.drawable.ic_mybackground);
Как я могу установить фон TabSpec так, что и метка И значок отображается на каждой вкладке?
tab_host.xml
<TabWidget
android:id="@android:id/tabs"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom" />
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:paddingTop="65dp" >
<LinearLayout
android:id="@+id/edit_species_tab"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:padding="5dp" >
</LinearLayout>
<LinearLayout
android:id="@+id/edit_regions_tab"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:padding="5dp" >
</LinearLayout>
<LinearLayout
android:id="@+id/edit_quiz_tab"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:padding="5dp" >
</LinearLayout>
<LinearLayout
android:id="@+id/edit_about_tab"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:padding="5dp" >
</LinearLayout>
</FrameLayout>
Означает ли это, что каждая тема подменяет API, по-своему? Я хотел бы знать, на какую документацию я должен ссылаться, поскольку это спасет меня так много времени. – Javide
Да. Это правда. Проверьте две разные версии LabelAndIconIndicatorStrategy в GrepCode. Для старого имбиря: http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/2.3.1_r1/android/widget/TabHost.java#TabHost.LabelAndIconIndicatorStrategy Для ICS: http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.0.1_r1/android/widget/TabHost.java#TabHost.LabelAndIconIndicatorStrategy Вы можете увидеть, что в версии ICS добавлен эксклюзивный флаг. – Chansuk