2012-09-02 28 views
3

我正在使用ViewPager在4個選項卡之間滑動。我很想將當前標籤在對齊的中間的標籤對齊,並且最右邊有一個標籤(如果可用),最右邊的標籤是一個。使用Viewpager顯示特定數量的選項卡

我知道你可以用一些第三方庫(例如傑克沃頓)做一些棘手的事情。但是,我可以使用本機ViewPager進行控制嗎? (我也在使用Support Library v4。)

至少,我的問題是,我可以定義屏幕上顯示的標籤數量嗎?我有4個,並且在任何給定時間想要3個。

這裏是我的佈局

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


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

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

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

+0

我也期待正是這個 – Rajendra

回答

0

一個標籤應用的普通視圖的頂部有三個選項卡,和你被允許通過他們刷卡。如果viewpager中有更多選項卡,則可以根據需要滾動選擇多個選項卡。

的實施將與此類似:

public class MainActivity extends FragmentActivity implements ActionBar.TabListener { 

    private ViewPager ViewPager; 
    private TabsPagerAdapter SectionsPagerAdapter; 
    private ActionBar actionBar; 

    private String[] tabs = { "Event Details", "Line-up", "Donations", "Concert"}; 

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

    // Initialisation 
     ViewPager = (ViewPager) findViewById(R.id.pager); 
     actionBar = getActionBar(); 
     SectionsPagerAdapter = new TabsPagerAdapter(getSupportFragmentManager()); 

     ViewPager.setAdapter(SectionsPagerAdapter); 
     actionBar.setHomeButtonEnabled(false); 
     actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 

    // Adding Tabs 
     for (String tab_name : tabs) { 
      actionBar.addTab(actionBar.newTab().setText(tab_name).setTabListener(this)); 
     } 

     ViewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { 

      @Override 
      public void onPageSelected(int position) { 
       // on changing the page 
       // make respected tab selected 
       actionBar.setSelectedNavigationItem(position); 
      } 

      @Override 
      public void onPageScrolled(int arg0, float arg1, int arg2) { 
      } 

      @Override 
      public void onPageScrollStateChanged(int arg0) { 
      } 
     }); 
    } 

    @Override 
    public void onTabReselected(Tab tab, android.app.FragmentTransaction ft) { 

    } 

    @Override 
    public void onTabSelected(Tab tab, android.app.FragmentTransaction ft) { 
     ViewPager.setCurrentItem(tab.getPosition()); 

    } 

    @Override 
    public void onTabUnselected(Tab tab, android.app.FragmentTransaction ft) { 
    } 
} 

希望這有助於:)

相關問題