2

我想要有不同數量的選項卡,並且我正在使用TabHost。 取決於數據,這些可能在1到8之間。帶水平滾動的TabHost問題

我想添加水平滾動,以便當所有8個都在那裏時,它看起來不會過於擁擠。

問題是當5個或更多有它看起來很好,滾動的作品! 但是,當標籤數量少,我看到空白。標籤不會被拉伸以填充額外的空間。

我該如何解決這個問題? 這可以通過Java代碼完成嗎?

這裏是我的佈局XML ...

<?xml version="1.0" encoding="utf-8"?> 
<TabHost xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@android:id/tabhost" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" > 

<LinearLayout 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" > 

    <!---Other Views---> 

    <HorizontalScrollView 
     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" /> 
    </HorizontalScrollView> 

    <FrameLayout 
     android:id="@android:id/tabcontent" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" /> 
</LinearLayout> 

</TabHost> 
+0

TabActivity和TabHost在android中被刪除。你可以使用'ListFragment'而不是'TabActvity'。查看[這裏](http://v4all123.blogspot.com/2013/04/fragments-in-android.html)簡單的'ListFragment'教程。 – Gunaseelan 2013-04-26 10:17:37

+0

使用版本2.3,所以我可以使用它 – 2013-04-26 11:37:47

+0

是的。您可以使用。但是爲什麼'tabhost'被depricated在使用它時,你的活動可能會運行緩慢。那就是問題所在。 – Gunaseelan 2013-04-26 11:50:47

回答

1

這是爲我工作。請嘗試。

<TabHost xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@android:id/tabhost" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" > 

    <LinearLayout 
     android:orientation="vertical" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent"> 

     <HorizontalScrollView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:fillViewport="true" 
      android:scrollbars="none" > 

      <TabWidget 
       android:id="@android:id/tabs" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:tabStripEnabled="true" 
       android:orientation="horizontal" /> 

     </HorizontalScrollView> 

     <FrameLayout 
      android:id="@android:id/tabcontent" 
      android:layout_width="fill_parent" 
      android:layout_height="0dp" 
      android:layout_weight="0"/> 

     <android.support.v4.view.ViewPager 
      android:id="@+id/pager" 
      android:layout_width="match_parent" 
      android:layout_height="0dp" 
      android:layout_weight="1"/> 

    </LinearLayout> 

</TabHost> 

順便說一句,它在哪裏說TabHost被棄用?我沒有得到任何警告...... 另外,依靠這個post,我相信TabHost是活着並且踢。

1

我增加了三個選項卡,並用它沒有問題,如果你想讓它滾動只是添加<HorizontalScrollView>作爲家長<TabWidget> mainActivity.xml

<?xml version="1.0" encoding="utf-8"?> 
<TabHost xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@android:id/tabhost" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 

    <RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical" > 

     <FrameLayout 
      android:id="@android:id/tabcontent" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_above="@android:id/tabs" /> 

     <TabWidget 
      android:id="@android:id/tabs" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_alignParentBottom="true" /> 
    </RelativeLayout> 

</TabHost> 

MainActivity

import android.app.TabActivity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.widget.TabHost; 
import android.widget.TabHost.OnTabChangeListener; 
import android.widget.TabHost.TabSpec; 

@SuppressWarnings("deprecation") 
public class MainActivity extends TabActivity implements OnTabChangeListener 
{ 
    TabHost tabHost; 

    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 

     setContentView(R.layout.activity_main); 

     tabHost = getTabHost(); 

     TabSpec photospec = tabHost.newTabSpec("Home"); 
     photospec.setIndicator(""); 
     Intent photosIntent = new Intent(this, Download.class); 
     photospec.setContent(photosIntent); 

     TabSpec songspec = tabHost.newTabSpec("Songs");   
     songspec.setIndicator(""); 
     Intent songsIntent = new Intent(this, Home.class); 
     songspec.setContent(songsIntent); 

     TabSpec videospec = tabHost.newTabSpec("Videos"); 
     videospec.setIndicator(""); 
     Intent videosIntent = new Intent(this, Album.class); 
     videospec.setContent(videosIntent); 

     tabHost.addTab(photospec); 
     tabHost.addTab(songspec); 
     tabHost.addTab(videospec); 

     tabHost.getTabWidget().getChildAt(0).setBackgroundResource(R.drawable.download_unselect); 
     tabHost.getTabWidget().getChildAt(1).setBackgroundResource(R.drawable.main_selected); 
     tabHost.getTabWidget().getChildAt(2).setBackgroundResource(R.drawable.albums_unselect); 

     tabHost.getTabWidget().getChildAt(0).getLayoutParams().height = 50; 

     tabHost.getTabWidget().getChildAt(1).getLayoutParams().height = 70; 

     tabHost.getTabWidget().getChildAt(2).getLayoutParams().height = 50; 

     tabHost.setCurrentTab(1); 

     tabHost.setOnTabChangedListener(this); 
    } 

    @Override 
    public void onTabChanged(String tab) 
    { 
     int index = tabHost.getCurrentTab(); 

     if(index == 0) 
     { 
      tabHost.getTabWidget().getChildAt(0).setBackgroundResource(R.drawable.download_selected); 
      tabHost.getTabWidget().getChildAt(1).setBackgroundResource(R.drawable.main_unselect); 
      tabHost.getTabWidget().getChildAt(2).setBackgroundResource(R.drawable.albums_unselect); 
     } 
     else if(index == 1) 
     { 
      tabHost.getTabWidget().getChildAt(0).setBackgroundResource(R.drawable.download_unselect); 
      tabHost.getTabWidget().getChildAt(1).setBackgroundResource(R.drawable.main_selected); 
      tabHost.getTabWidget().getChildAt(2).setBackgroundResource(R.drawable.albums_unselect); 
     } 
     else if(index == 2) 
     { 
      tabHost.getTabWidget().getChildAt(0).setBackgroundResource(R.drawable.download_unselect); 
      tabHost.getTabWidget().getChildAt(1).setBackgroundResource(R.drawable.main_unselect); 
      tabHost.getTabWidget().getChildAt(2).setBackgroundResource(R.drawable.albums_selected); 
     } 
    } 

}