2

我想讓我的scrollable tab工作(像Google Play中的菜單那樣的滾動選項卡)。我使用android.support.v4.app.FragmentTabHost作爲標籤主機,並使用android.support.v4.app.Fragment作爲片段。除了選項卡主機不可滾動(我正在使用滾動功能的HorizontalScrollView)之外,一切都正常。如果我將tabhost更改爲標準android.widget.TabHost並將活動更改爲TabActivity,那麼它可以工作。所以我假設有一些FragmentTabHost,ScrollView無法正常工作。我想讓我的選項卡滾動,但在使用FragmentTabHost時不起作用

<?xml version="1.0" encoding="utf-8"?> 
<android.support.v4.app.FragmentTabHost 
     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" > 

     <HorizontalScrollView android:layout_width="fill_parent" 
           android:layout_height="wrap_content" 
           android:fillViewport="true" 
           android:scrollbars="horizontal"> 
      <TabWidget 
        android:id="@android:id/tabs" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_weight="0" 
        android:orientation="horizontal" /> 
     </HorizontalScrollView> 

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

</android.support.v4.app.FragmentTabHost> 

這裏是FragmentTabHost的一些代碼:

public class MyTabActivity extends FragmentActivity { 

private FragmentTabHost mTabHost; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.news); 

    mTabHost = (FragmentTabHost) findViewById(android.R.id.tabhost); 
    mTabHost.setup(this, getSupportFragmentManager(), android.R.id.tabcontent); 



    mTabHost.addTab(
      mTabHost.newTabSpec("tab1").setIndicator("Tab 1", 
        getResources().getDrawable(android.R.drawable.star_on)), 
      FragmentTab.class, null); 
    mTabHost.addTab(
      mTabHost.newTabSpec("tab2").setIndicator("Tab 2", 
        getResources().getDrawable(android.R.drawable.star_on)), 
      FragmentTab.class, null); 
    mTabHost.addTab(
      mTabHost.newTabSpec("tab3").setIndicator("Tab 3", 
        getResources().getDrawable(android.R.drawable.star_on)), 
      FragmentTab.class, null); 
    ...... 
    ...... 

如果我添加更多的標籤,標籤只是變得更小,以適應屏幕。滾動從不出現,但我希望它可以滾動!

出了什麼問題?

+0

你引用的是帶有PagerTitleStrip而不是FragmentTabHost的'ViewPager'。 – Luksprog

+0

滑動整個屏幕不是'ViewPager'嗎?或者是否可以用'ViewPager'來滑動屏幕的一部分? – Rox

+0

您可以使用ViewPager滾動整個內容視圖或其中的一部分。 http://developer.android.com/training/animation/screen-slide.html – Luksprog

回答

0

使用Viewpager是一個好主意......但是,如果您想保留這個實現,請考慮這個XML佈局。

<HorizontalScrollView 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:fillViewport="true" 
      android:scrollbars="none" > 
     <TabWidget 
      android:id="@android:id/tabs" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_gravity="bottom"/> 
     </HorizontalScrollView> 
相關問題