2014-02-08 1 views
0

Я хочу изменить фоновое изображение вкладок, когда они выбраны и не выбраны. Я следил за несколькими способами, чтобы сделать это из других вопросов, но они, похоже, не работали, не могли бы вы проверить мой код и посмотреть, что я делаю неправильно? (Вопрос, который я говорил о - How to change the Tabs Images in the TabHost)Настройка TabHost Android

Ниже вкладка в MainActivity

TabSpec specs = th.newTabSpec("Tab1"); 
    specs.setContent(R.id.tab1); 
    specs.setIndicator("Tab 1", 
      res.getDrawable(R.drawable.tab1_selector)); 
    th.addTab(specs); 

Ниже XML

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<!-- When selected, use icon1 --> 
<item android:drawable="@drawable/selected" 
    android:state_selected="true" /> 
<!-- When not selected, use icon2--> 
<item android:drawable="@drawable/unselected" 
    android:state_selected="false" /> 
</selector> 

Спасибо, Том.

ответ

1

Обновленный ответ. Вы должны использовать этот метод TabSpecs.setIndicator(View view) и предоставить ему экземпляр View (возможно, LinearLayout с TextView в нем) и установить выделение в качестве фона для представления.

Создайте новый ресурс компоновки XML, содержащий LinearLayout, с одним вложенным TextView в качестве макета для вашей вкладки. Затем вы должны создать функцию, которая раздувает этот XML в экземпляр View и задает контент TextView (название вкладки). . Затем вы должны вызвать метод setIndicator() с этим представлением. Он эффективно заменит весь контент вашей вкладки на это представление.

View v = LayoutInflater.from(this).inflate(R.layout.tab_layout, tabHost.getTabWidget(), false); 
TextView label = (TextView) v.findViewById(R.id.textView); 
label.setText("Title of your tab"); 

метод вы использовали только устанавливает рисуем в виде значка (согласно документации), так что может быть проблема ..

В качестве альтернативы вы можете установить тему таким образом. Он должен работать.

<style name="MyCustomTheme" parent="@android:style/Theme.Holo.Light"> 
    <item name="android:tabWidgetStyle">@style/CustomTabWidget</item> 
</style> 

<style name="CustomTabWidget" parent="@android:style/Widget.TabWidget"> 
    <item name="android:background">@drawable/your_drawable</item> 
</style> 

Или вы можете просто попытаться получить прямую ссылку на вкладки вашего кода. Ну вот как то так.

for(int i=0;i<tabHost.getTabWidget().getChildCount();i++) { 
    tabHost.getTabWidget().getChildAt(i).setBackground(R.drawable.your_drawable); 
} 
+0

Он использует tabHost not actionBar для вкладок. – Tssomas

+0

Увы, было слишком рано :) Извините, что .. Я изменю ответ, как только вернусь за своим столом – simekadam

+0

Прошу прощения, я немного смущен. Не могли бы вы показать пример, пожалуйста? Спасибо, кстати. – Tssomas

 Смежные вопросы

  • Нет связанных вопросов^_^