2012-06-15 4 views
0

Я пытался стилизовать ActionBarSherlock, чтобы придать моему приложению внешний вид, который я желаю, но пока я преуспел в большинстве, я боролся с вкладками (которые могут быть вытертые фрагментами). Я до сих пор не смог дать ему особый фон и цвет текста, а также удалить границу между вкладками.Как создать пользовательские вкладки при использовании ActionBarSherlock

То, что я в настоящее время является

enter image description here

Принимая во внимание то, что я хочу, чтобы это выглядело, как это enter image description here

Вот код, я использую в своей деятельности, большинство из которых я (я свяжу его, как только найду его снова):

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 (Super Jake)