Изменение изображения Tabhost при выборе

Я попытался изменить изображение вкладки с цветом фона, как показано на изображении, вот источник того, что я сделал ... Я также просмотрел это Как изменить изображения вкладок в TabHost

в чем проблема?

       mTabHst.addTab(mTabHst.newTabSpec("tab_test1").setIndicator(null,res.getDrawable(R.drawable.custom_widget_list))
                .setContent(i));   

     mTabHst.addTab(mTabHst.newTabSpec("tab_test2").setIndicator(null,res.getDrawable(R.drawable.custom_widget_trans))
                .setContent(j));


         int tabCount = mTabHst.getTabWidget().getTabCount();
         for (int r = 0; r < tabCount; r++) {
             final View view = mTabHst.getTabWidget().getChildTabViewAt(r);

             if ( view != null ) {
                 // reduce height of the tab
                 view.getLayoutParams().height *= 0.70;

             }
         }


         mTabHst.setCurrentTab(0); 

}

Вот моя вкладка xml

 <TabWidget
        android:id="@android:id/tabs"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true" 
        android:layout_gravity="center"
        android:background="#FFFFFF"
        android:tabStripEnabled="false" 
        android:gravity="center"  />

custom_widget_list.xml

<item android:drawable="@drawable/member_pink" android:state_pressed="true"   android:state_selected="false" android:color="#FFFFFF"></item>
<item android:drawable="@drawable/username" android:state_pressed="false" android:state_selected="false" android:color="#FFFFFF"></item>
<item android:drawable="@drawable/member_pink" android:state_pressed="false" android:state_selected="true" android:color="#FF00FF"></item>

custom_widget_trans.xml

    <?xml version="1.0" encoding="utf-8"?>
   <selector xmlns:android="http://schemas.android.com/apk/res/android" > 
<item android:drawable="@drawable/member_pink" android:state_pressed="true"      android:state_selected="false" android:color="#FFFFFF"></item>
   <item android:drawable="@drawable/member4" android:state_pressed="false"   android:state_selected="false" android:color="#FFFFFF"></item>
    <item android:drawable="@drawable/member_pink" android:state_pressed="false"  android:state_selected="true" android:color="#FF00FF"></item>

Here is Screenshot:

введите описание изображения здесь

а вот и экран 2.

введите описание изображения здесь


person Community    schedule 25.03.2014    source источник
comment
TabHost не рекомендуется использовать. Рассмотрите возможность использования вкладок на панели действий (developer.android.com/guide /topics/ui/actionbar.html#Tabs), или вы можете использовать ActionBarSherlock, чтобы обеспечить обратную совместимость со старой версией Android.   -  person GVillani82    schedule 25.03.2014
comment
проверьте это.   -  person maddy d    schedule 25.03.2014


Ответы (2)


Вам просто нужно установить селектор для вкладок. Создайте представление и используйте свой селектор.

Шаг 1: создайте в вашем методе, который вернет представление с фоном вашего селектора.

private View getTabIndicator(){
    View view = new View(this);
    view.setBackgroundResource(R.drawable.tab_selector);
    return view;
}

Шаг 2: Храните файл tab_selector.xml в папке res / drawable.

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <!--  Active tab -->
<item android:state_selected="true" android:state_focused="false"
    android:state_pressed="false" android:drawable="@drawable/tab_bg_selected" />
<!--  Inactive tab -->
<item android:state_selected="false" android:state_focused="false"
android:state_pressed="false" android:drawable="@drawable/tab_bg_unselected" />
<!--  Pressed tab -->
<item android:state_pressed="true" android:drawable="@android:color/transparent" />
<!--  Selected tab (using d-pad) -->
<item android:state_focused="true" android:state_selected="true"
android:state_pressed="false" android:drawable="@android:color/transparent" />
</selector>

Шаг 3: Теперь setIndicator () будет иметь настраиваемый вид, поскольку индикатор и селектор будут управлять фоновыми изображениями.

mTabHst.addTab(mTabHst.newTabSpec("tab_test2").setIndicator(getTabIndicator()).setContent(j));

Надеюсь, это поможет вам ..

person Vishesh Chandra    schedule 25.03.2014

Шаг 1:

Добавьте приведенный ниже код в метод oncreate.

    TabSpec Summary = tabHost.newTabSpec("Study  Summary");
        Summary.setIndicator(NetworkStatus.createTabView(
                TabActivityPacs.activity, R.drawable.custom_widget_list));
        Intent studysummary = new Intent(this, Stusummaryactivity.class);
        Summary.setContent(studysummary);

        TabSpec trans= tabHost.newTabSpec("Transcription");
        trans.setIndicator(NetworkStatus.createTabView(
                TabActivityPacs.activity, R.drawable.custom_widget_trans));
        Intent trintent = new Intent(this, Testtranscription.class);
        trans.setContent(trintent);

             tabHost.addTab(StudySummary);
    tabHost.addTab(Transcription);

Шаг 2:

Используйте доступную папку для настраиваемых виджетов ниже.

custom_widget_list.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

   <!-- Tab widget design -->
    <item android:drawable="@drawable/listpres" android:state_pressed="true"   android:state_selected="false"></item>
    <item android:drawable="@drawable/list" android:state_pressed="false" android:state_selected="false"></item>
    <item android:drawable="@drawable/listpres" android:state_selected="true"></item>

</selector>

custom_widget_trans.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" ><!-- Tab widget design -->
    <item android:drawable="@drawable/transcription1pres" android:state_pressed="true" android:state_selected="false"></item>
    <item android:drawable="@drawable/transcription" android:state_pressed="false" android:state_selected="false"></item>
    <item android:drawable="@drawable/transcription1pres" android:state_selected="true"></item>

</selector>
person Sethu    schedule 25.03.2014
comment
Получил, но не получил то же самое, что я уже упоминал .... я пытаюсь установить розовый цвет внизу, когда выбран ... и когда ложно нужен белый фон, но он показывает черный ... @Sethu - person ; 25.03.2014
comment
выберите два типа формы или изображения, например, белый фон и розовый. Если он выбран, значит установить розовый цвет, false означает, что достаточно установить белый цвет изображения. - person Sethu; 26.03.2014
comment
я сделал, но этого не происходит ... @Sethu - person ; 26.03.2014
comment
он работает на меня ... так что введите свой код, я буду направлять вас. - person Sethu; 26.03.2014
comment
хорошо ... теперь посмотрите мой код ... добавил оба xml в мое затмение ... @Sethu - person ; 26.03.2014