2012-06-15 61 views
0

我一直在試圖對ActionBarSherlock進行樣式設計,以便爲我的應用程序提供我期望的外觀,但是儘管我已獲得大多數成功,但我一直在努力使用Tabs(可以是用碎片擦)。到目前爲止,我沒有給它一個自定義的背景和文本顏色,同時也刪除了標籤之間的邊框。如何在使用ActionBarSherlock時設計自定義選項卡

我現在擁有的是

enter image description here

而我希望使它看起來像是 enter image description here

下面是我使用活動中的代碼,其中大部分我「VE的另一個問題借來SO(我會盡快,我再次發現其鏈接):

public class HomeActivity extends SherlockFragmentActivity { 
ViewPager mViewPager; 
TabsAdapter mTabsAdapter; 
TextView tabCenter; 
TextView tabText; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    mViewPager = new ViewPager(this); 
    mViewPager.setId(R.id.pager); 

    setContentView(mViewPager); 
    ActionBar bar = getSupportActionBar(); 
    bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 
    bar.setDisplayOptions(0, ActionBar.DISPLAY_SHOW_TITLE); 

    mTabsAdapter = new TabsAdapter(this, mViewPager); 


    mTabsAdapter.addTab(bar.newTab().setText("Tab 1"), 
      MyFragment.class, null); 
    mTabsAdapter.addTab(bar.newTab().setText("Tab 2"), 
      MyFragment.class, null); 
    mTabsAdapter.addTab(bar.newTab().setText("Tab 3"), 
      MyFragment.class, null); 
} 

public static class TabsAdapter extends FragmentPagerAdapter implements 
     ActionBar.TabListener, ViewPager.OnPageChangeListener { 
    private final Context mContext; 
    private final ActionBar mActionBar; 
    private final ViewPager mViewPager; 
    private final ArrayList<TabInfo> mTabs = new ArrayList<TabInfo>(); 

    static final class TabInfo { 
     private final Class<?> clss; 
     private final Bundle args; 

     TabInfo(Class<?> _class, Bundle _args) { 
      clss = _class; 
      args = _args; 
     } 
    } 

    public TabsAdapter(SherlockFragmentActivity activity, ViewPager pager) { 
     super(activity.getSupportFragmentManager()); 
     mContext = activity; 
     mActionBar = activity.getSupportActionBar(); 
     mViewPager = pager; 
     mViewPager.setAdapter(this); 
     mViewPager.setOnPageChangeListener(this); 
    } 

    public void addTab(ActionBar.Tab tab, Class<?> clss, Bundle args) { 
     TabInfo info = new TabInfo(clss, args); 
     tab.setTag(info); 
     tab.setTabListener(this); 
     mTabs.add(info); 
     mActionBar.addTab(tab); 
     notifyDataSetChanged(); 
    } 

    @Override 
    public int getCount() { 
     return mTabs.size(); 
    } 

    @Override 
    public Fragment getItem(int position) { 
     TabInfo info = mTabs.get(position); 
     return Fragment.instantiate(mContext, info.clss.getName(), 
       info.args); 
    } 

    @Override 
    public void onPageScrolled(int position, float positionOffset, 
      int positionOffsetPixels) { 
    } 

    @Override 
    public void onPageSelected(int position) { 
     mActionBar.setSelectedNavigationItem(position); 
    } 

    @Override 
    public void onPageScrollStateChanged(int state) { 
    } 

    @Override 
    public void onTabUnselected(Tab tab, FragmentTransaction ft) { 
     // TODO Auto-generated method stub 

    } 

    @Override 
    public void onTabReselected(Tab tab, FragmentTransaction ft) { 
     // TODO Auto-generated method stub 

    } 

    @Override 
    public void onTabSelected(Tab tab, FragmentTransaction ft) { 
     // TODO Auto-generated method stub 

    } 
    } 
} 
+0

您是否使用ViewPagerIndicator庫? – you786

+0

我沒有使用除ActionBarSherlock以外的任何庫 –

+0

你最終想出瞭如何解決這個問題? –

回答

0

避免FragmentPagerAdapter的繼承來做你想做的事。你應該使用viewPager與viewPagerIndicator庫:ViewPagerIndicator 看一下,這是非常容易使用和由SJ開發(超級傑克)

相關問題