2012-06-15 65 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开发(超级杰克)

相关问题