как поменять таб позиции в андроиде - PullRequest
0 голосов
/ 06 декабря 2011

Я использовал вложенные вкладки в Android, мое требование - выбранная вкладка должна быть посередине. Я пытался решить эту проблему, но не нашел никакого решения для этого.

Может кто-нибудь сказать мне решение?

Следующий код для размещения вкладок в моем Activity.

for (int i = 0; i < activitis.length; i++) 
{
 position = i;
 intent1 = new Intent().setClass(this, Tab_team.class);
 intent1.putExtra("tabactivity", activitis[i]);
 spec = tabHost.newTabSpec(activitis[i]).setIndicator(activitis[i],
 res.getDrawable(images[i])).setContent(intent1);
 tabHost.addTab(spec);
}

1 Ответ

0 голосов
/ 06 декабря 2011

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

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

 <FrameLayout android:layout_width="fill_parent" 
     android:layout_height="wrap_content">
     <TabWidget android:id="@android:id/tabs" 
         android:layout_width="fill_parent"   
         android:layout_height="wrap_content"
         android:visibility="gone"/>
         <LinearLayout android:layout_width="fill_parent" 
             android:layout_height="64dip">
             <Button android:layout_height="fill_parent" 
                 android:layout_width="0dip" 
                 android:layout_weight="1.0"
                 android:background="@drawable/ic_tab_artists" 
                 android:id="@+id/artist_id" 
                 android:onClick="tabHandler"/>
             <Button android:layout_height="fill_parent" 
                 android:layout_width="0dip" 
                 android:layout_weight="1.0"
                 android:background="@drawable/ic_tab_artists" 
                 android:id="@+id/album_id" 
                 android:onClick="tabHandler"/>
             <Button android:layout_height="fill_parent" 
                 android:layout_width="0dip" 
                 android:layout_weight="1.0"
                 android:background="@drawable/ic_tab_artists" 
                 android:id="@+id/song_id" 
                 android:onClick="tabHandler"/>
        </LinearLayout>
 </FrameLayout>

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

public void tabHandler(View target){
     tab1Btn.setSelected(false);
     tab2Btn.setSelected(false);
     tab3Btn.setSelected(false);
     target.setSelected(true);
     if(target.getId() == R.id.artist_id){
         tabHost.setCurrentTab(0);
     } else if(target.getId() == R.id.album_id){
         tabHost.setCurrentTab(1);
     } else if(target.getId() == R.id.song_id){
         tabHost.setCurrentTab(2);    
     }
}

Здесь я переключаю вкладки, используя хост вкладок.В этом же методе вы можете написать код, чтобы удалить нажатую кнопку и снова вставить его в среднее положение внешнего слоя.Там могут быть более простые решения, но вам нужно будет сделать проб и ошибок, как это.Но это один из способов справиться с требованием.

...