Android 如何在使用ActionBarSherlock时设计自定义选项卡

Android 如何在使用ActionBarSherlock时设计自定义选项卡,android,actionbarsherlock,Android,Actionbarsherlock,我一直在尝试设计ActionBarSherlock,以使我的应用程序具有我想要的外观,但尽管我在大多数方面都取得了成功,但我在标签(可以用碎片滑动)方面遇到了困难。到目前为止,我没有给它一个自定义的背景和文本颜色,同时也删除了标签之间的边框 我现在拥有的是 而我想让它看起来像是 以下是我在活动中使用的代码,其中大部分是我从另一个问题中借用的,因此(我将在再次找到它后立即链接它): 公共类HomeActivity扩展了SherlockFragmentActivity{ ViewPager mV

我一直在尝试设计ActionBarSherlock,以使我的应用程序具有我想要的外观,但尽管我在大多数方面都取得了成功,但我在标签(可以用碎片滑动)方面遇到了困难。到目前为止,我没有给它一个自定义的背景和文本颜色,同时也删除了标签之间的边框

我现在拥有的是

而我想让它看起来像是

以下是我在活动中使用的代码,其中大部分是我从另一个问题中借用的,因此(我将在再次找到它后立即链接它):

公共类HomeActivity扩展了SherlockFragmentActivity{
ViewPager mViewPager;
TabsAdapter MTABASADAPTER;
文本视图选项卡中心;
文本视图选项卡文本;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
mViewPager=新的ViewPager(此);
mviewpage.setId(R.id.pager);
setContentView(mViewPager);
ActionBar=getSupportActionBar();
设置导航模式(操作栏导航模式选项卡);
设置显示选项(0,ActionBar.DISPLAY\u SHOW\u TITLE);
MTABS适配器=新选项卡适配器(此为mViewPager);
MTABAdapter.addTab(bar.newTab().setText(“选项卡1”),
MyFragment.class,null);
MTABAdapter.addTab(bar.newTab().setText(“选项卡2”),
MyFragment.class,null);
MTABAdapter.addTab(bar.newTab().setText(“选项卡3”),
MyFragment.class,null);
}
公共静态类TabsAdapter扩展了FragmentPagerAdapter实现
ActionBar.TablListener、ViewPager.OnPageChangeListener{
私有最终上下文mContext;
私人终审法院;
专用最终查看页面mViewPager;
private final ArrayList mtab=new ArrayList();
静态最终类TabInfo{
私人期末班;
私有最终包args;
TabInfo(类_类,捆绑参数){
clss=_类;
args=_args;
}
}
公共选项卡dapter(SherlockFragmentActivity活动、ViewPager寻呼机){
super(activity.getSupportFragmentManager());
mContext=活动;
mActionBar=activity.getSupportActionBar();
mViewPager=寻呼机;
mViewPager.setAdapter(此);
mViewPager.setOnPageChangeListener(此);
}
public void addTab(ActionBar.Tab选项卡,类cls,Bundle args){
TabInfo=新的TabInfo(clss,args);
tab.setTag(信息);
tab.setTableListener(此);
添加(信息);
mActionBar.addTab(tab);
notifyDataSetChanged();
}
@凌驾
public int getCount(){
返回mTabs.size();
}
@凌驾
公共片段getItem(int位置){
TabInfo=mTabs.get(位置);
返回Fragment.instantiate(mContext,info.clss.getName(),
info.args);
}
@凌驾
公共无效页已滚动(整型位置、浮动位置偏移、,
int positionOffsetPixels){
}
@凌驾
已选择页面上的公共无效(内部位置){
mActionBar.setSelectedNavigationItem(位置);
}
@凌驾
公共无效onPageScrollStateChanged(int状态){
}
@凌驾
已选择公共空页(选项卡,碎片事务ft){
//TODO自动生成的方法存根
}
@凌驾
已重新选择公共无效页签(页签,碎片事务){
//TODO自动生成的方法存根
}
@凌驾
已选择的公共事务(选项卡,碎片事务ft){
//TODO自动生成的方法存根
}
}
}

避免继承FragmentPagerAdapter来做你想做的事。应将viewPager与viewPagerIndicator库一起使用:
看一看,SJ(超级杰克)很容易使用和开发它。

您使用的是ViewPagerIndicator库吗?除了ActionBar之外,我没有使用过任何库。夏洛克您最终找到了解决方法吗?很抱歉反应太晚,Karey,我使用了ViewPagerIndicator库,这使它成为可能。
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

    }
    }
}