Android的动作条选项卡 - 刷卡 [英] Android ActionBar Tabs - Swipe

查看:103
本文介绍了Android的动作条选项卡 - 刷卡的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这将是很好,如果我可以在标签我曾在我的动作条的刷卡。

我已经按照这些教程: http://developer.android.com /training/implementing-navigation/lateral.html 但它不会工作。 :(我不能与标签之间的手势滑动。

下面是我的主要活动:

 公共类Hauptmenue_extended扩展ActionBarActivity工具
        android.content.DialogInterface.OnClickListener {
@覆盖
    保护无效的onCreate(包savedInstanceState){
        super.onCreate(savedInstanceState);

        的setContentView(R.layout.activity_hauptmenue_extended);

        尝试 {
            mPullToRefreshAttacher = PullToRefreshAttacher.get(本);

            动作条= getSupportActionBar();
            actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
            actionBar.setDisplayHomeAsUpEnabled(真正的);
            actionBar.setHomeButtonEnabled(真正的);

            mAdapter =新TabsPagerAdapter(getSupportFragmentManager());

            mViewPager =(ViewPager)findViewById(R.id.pager);
            mViewPager.setAdapter(mAdapter);


            标签塔布= actionBar.newTab();
            tabB.setText(家);
            tabB.setIcon(R.drawable.icon_home);
            tabB.setTabListener(新TabListener< Startmenue_activity>(这一点,
                    开始,Startmenue_activity.class,this.mViewPager));
            actionBar.addTab(塔布);

            标签塔巴= actionBar.newTab();
            tabA.setText();
            tabA.setIcon(R.drawable.icon_nachrichten_sel);
            tabA.setTabListener(新TabListener< Nachrichten_activity>(这一点,
                    新闻报,Nachrichten_activity.class,this.mViewPager));
            actionBar.addTab(塔巴);

            标签TABC = actionBar.newTab();
            tabC.setText();
            tabC.setIcon(R.drawable.icon_favoriten);
            tabC.setTabListener(新TabListener< Favoriten_activity>(这一点,
                    法沃里滕,Favoriten_activity.class,this.mViewPager));
            actionBar.addTab(TABC);



            this.conEinst =新conEinstellungen(getBaseContext());

        }赶上(例外前){
            ex.printStackTrace();
            // HelperClassAlertDialog.zeigeInfoDialog(这一点,错误......
        }
    }

公共类TabsPagerAdapter扩展FragmentPagerAdapter {

        公共TabsPagerAdapter(FragmentManager FM){
            超(FM);
        }

        公共片段的getItem(INT指数){

            开关(指数){
            情况下0:
                //最高评分片段活动
                返回新Startmenue_activity();
            情况1:
                //游戏片段活动
                返回新Nachrichten_activity();
            案例2:
                //电影片段活动
                返回新Favoriten_activity();
            }

            返回null;
        }

        公众诠释getCount将(){
            //获取项目计数 - 等于标签数
            返回3;
        }

    }
 

这是XML:

  

 < android.support.v4.view.ViewPager
    的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
    机器人:ID =@ + ID /寻呼机
    机器人:layout_width =match_parent
    机器人:layout_height =match_parent>

    < android.support.v4.view.PagerTabStrip
        机器人:ID =@ + ID /标签
        机器人:layout_width =match_parent
        机器人:layout_height =WRAP_CONTENT
        机器人:layout_gravity =顶/>
< /android.support.v4.view.ViewPager>
 

     

解决方案

这完美的作品,你会选项卡之间刷卡:

MainActivity

 公共类MainActivity扩展FragmentActivity工具
    ActionBar.TabListener {
    CollectionPagerAdapter mCollectionPagerAdapter;
    ViewPager mViewPager;

    公共无效的onCreate(包savedInstanceState){
           super.onCreate(savedInstanceState);
           的setContentView(R.layout.activity_main);

           mCollectionPagerAdapter =新CollectionPagerAdapter(
           getSupportFragmentManager());

        最后的动作条动作条= getActionBar();
        actionBar.setHomeButtonEnabled(假);
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
        mViewPager =(ViewPager)findViewById(R.id.pager);
        mViewPager.setAdapter(mCollectionPagerAdapter);
        mViewPager
        .setOnPageChangeListener(新ViewPager.SimpleOnPageChangeListener(){

            @覆盖

            公共无效onPageSelected(INT位置){
                actionBar.setSelectedNavigationItem(位置);
            }

        });
    的for(int i = 0; I< mCollectionPagerAdapter.getCount();我++){
    actionBar.addTab(actionBar.newTab()
    .setText(mCollectionPagerAdapter.getPageTitle(I))
    .setTabListener(本));
    }

    }

    公共无效onTabUnselected(ActionBar.Tab选项卡,
    FragmentTransaction fragmentTransaction){

    }

    公共无效onTabSelected(ActionBar.Tab选项卡,
    FragmentTransaction fragmentTransaction){
    mViewPager.setCurrentItem(tab.getPosition());

    }

    公共无效onTabReselected(ActionBar.Tab选项卡,
    FragmentTransaction fragmentTransaction){

    }

    公共类CollectionPagerAdapter扩展FragmentPagerAdapter {

    最终诠释NUM_ITEMS = 3; //标签的数量

    公共CollectionPagerAdapter(FragmentManager FM){
    超(FM);

    }

    @覆盖

    公共片段的getItem(int i)以{
    片段片段=新TabFragment();
    捆绑的args =新包();
    args.putInt(TabFragment.ARG_OBJECT,我);
    fragment.setArguments(参数);
    返回片段;

}

    @覆盖
    公众诠释getCount将(){

    返回NUM_ITEMS;

}

    @覆盖
    公共CharSequence的getPageTitle(INT位置){
    字符串tabLabel = NULL;
    开关(位置){
        情况下0:
            tabLabel =的getString(R.string.label1);
            打破;
        情况1:
            tabLabel =的getString(R.string.label2);
            打破;
        案例2:
            tabLabel =的getString(R.string.label3);
            打破;

    }

    返回tabLabel;

    }
    }

     公共静态类TabFragment扩展片段{
     公共静态最后弦乐ARG_OBJECT =对象;

     @覆盖
     公共查看onCreateView(LayoutInflater充气,容器的ViewGroup,
                         捆绑savedInstanceState){

    捆绑的args = getArguments();
    INT位置= args.getInt(ARG_OBJECT);
    INT tabLayout = 0;
    开关(位置){
        情况下0:
            tabLayout = R.layout.tab1;
            打破;
        情况1:
            tabLayout = R.layout.tab2;
            打破;
        案例2:
            tabLayout = R.layout.tab3;
            打破;
    }

    查看rootView = inflater.inflate(tabLayout,集装箱,假);
    返回rootView;

    }

   }

   }
 

activity_main

 < android.support.v4.view.ViewPager的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
的xmlns:工具=htt​​p://schemas.android.com/tool​​s
机器人:ID =@ + ID /寻呼机
机器人:layout_width =match_parent
机器人:layout_height =match_parent
工具:上下文=。MainActivity/>
 

tab1.xml

 < XML版本=1.0编码=UTF-8&GT?;
< LinearLayout中的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
机器人:ID =@ + ID / TAB1
机器人:layout_width =match_parent
机器人:layout_height =match_parent
机器人:方向=垂直
机器人:重力=中心>

<的TextView
机器人:ID =@ + ID / textView1
机器人:layout_width =WRAP_CONTENT
机器人:layout_height =WRAP_CONTENT
机器人:layout_gravity =中心
机器人:文本=@字符串/ body1/>

< / LinearLayout中>
 

tab2.xml

 < XML版本=1.0编码=UTF-8&GT?;
< LinearLayout中的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
机器人:ID =@ + ID / TAB2
机器人:layout_width =match_parent
机器人:layout_height =match_parent
机器人:方向=垂直
机器人:重力=中心>

<的TextView
    机器人:ID =@ + ID / textView2
    机器人:layout_width =WRAP_CONTENT
    机器人:layout_height =WRAP_CONTENT
    机器人:layout_gravity =中心
    机器人:文本=@字符串/ body2/>

 < / LinearLayout中>
 

tab3.xml

 < XML版本=1.0编码=UTF-8&GT?;
  < LinearLayout中的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
机器人:ID =@ + ID / TAB3
机器人:layout_width =match_parent
机器人:layout_height =match_parent
机器人:方向=垂直
机器人:重力=中心>

<的TextView
    机器人:ID =@ + ID / textView3
    机器人:layout_width =WRAP_CONTENT
    机器人:layout_height =WRAP_CONTENT
    机器人:layout_gravity =中心
    机器人:文本=@字符串/ body3/>

 < / LinearLayout中>
 

it would be nice, if i could swipe between the tabs i had in my actionbar.

I've followed these tutorial: http://developer.android.com/training/implementing-navigation/lateral.html but it wont work. :( I cannot swipe with a gesture between the tabs.

Here is my main activity:

public class Hauptmenue_extended extends ActionBarActivity implements
        android.content.DialogInterface.OnClickListener {
@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_hauptmenue_extended);

        try {           
            mPullToRefreshAttacher = PullToRefreshAttacher.get(this);

            actionBar = getSupportActionBar();
            actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);    
            actionBar.setDisplayHomeAsUpEnabled(true);
            actionBar.setHomeButtonEnabled(true);

            mAdapter = new TabsPagerAdapter(getSupportFragmentManager());

            mViewPager = (ViewPager) findViewById(R.id.pager);
            mViewPager.setAdapter(mAdapter);


            Tab tabB = actionBar.newTab();
            tabB.setText("Home");
            tabB.setIcon(R.drawable.icon_home);
            tabB.setTabListener(new TabListener<Startmenue_activity>(this,
                    "Start", Startmenue_activity.class, this.mViewPager));
            actionBar.addTab(tabB);

            Tab tabA = actionBar.newTab();
            tabA.setText("");
            tabA.setIcon(R.drawable.icon_nachrichten_sel);
            tabA.setTabListener(new TabListener<Nachrichten_activity>(this,
                    "Nachrichten", Nachrichten_activity.class, this.mViewPager));
            actionBar.addTab(tabA);

            Tab tabC = actionBar.newTab();
            tabC.setText("");
            tabC.setIcon(R.drawable.icon_favoriten);
            tabC.setTabListener(new TabListener<Favoriten_activity>(this,
                    "Favoriten", Favoriten_activity.class, this.mViewPager));
            actionBar.addTab(tabC);



            this.conEinst = new conEinstellungen(getBaseContext());

        } catch (Exception ex) {
            ex.printStackTrace();
            // HelperClassAlertDialog.zeigeInfoDialog(this, "Error...",
        }
    }

public class TabsPagerAdapter extends FragmentPagerAdapter {

        public TabsPagerAdapter(FragmentManager fm) {
            super(fm);
        }

        public Fragment getItem(int index) {

            switch (index) {
            case 0:
                // Top Rated fragment activity
                return new Startmenue_activity();
            case 1:
                // Games fragment activity
                return new Nachrichten_activity();
            case 2:
                // Movies fragment activity
                return new Favoriten_activity();
            }

            return null;
        }

        public int getCount() {
            // get item count - equal to number of tabs
            return 3;
        }

    }

And this is the XML:

<android.support.v4.view.ViewPager
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/pager"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <android.support.v4.view.PagerTabStrip
        android:id="@+id/tabs"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="top" />
</android.support.v4.view.ViewPager>

解决方案

This works perfectly, you will swipe between tabs:

MainActivity:

public class MainActivity extends FragmentActivity implements
    ActionBar.TabListener {
    CollectionPagerAdapter mCollectionPagerAdapter;
    ViewPager mViewPager;

    public void onCreate(Bundle savedInstanceState) {
           super.onCreate(savedInstanceState);
           setContentView(R.layout.activity_main);

           mCollectionPagerAdapter = new CollectionPagerAdapter(
           getSupportFragmentManager());

        final ActionBar actionBar = getActionBar();
        actionBar.setHomeButtonEnabled(false);
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
        mViewPager = (ViewPager) findViewById(R.id.pager);
        mViewPager.setAdapter(mCollectionPagerAdapter);
        mViewPager
        .setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {

            @Override

            public void onPageSelected(int position) {
                actionBar.setSelectedNavigationItem(position);
            }

        });
    for (int i = 0; i < mCollectionPagerAdapter.getCount(); i++) {
    actionBar.addTab(actionBar.newTab()
    .setText(mCollectionPagerAdapter.getPageTitle(i))
    .setTabListener(this));
    }

    }

    public void onTabUnselected(ActionBar.Tab tab,
    FragmentTransaction fragmentTransaction) {

    }

    public void onTabSelected(ActionBar.Tab tab,
    FragmentTransaction fragmentTransaction) {
    mViewPager.setCurrentItem(tab.getPosition());

    }

    public void onTabReselected(ActionBar.Tab tab,
    FragmentTransaction fragmentTransaction) {

    }

    public class CollectionPagerAdapter extends FragmentPagerAdapter {

    final int NUM_ITEMS = 3; // number of tabs

    public CollectionPagerAdapter(FragmentManager fm) {
    super(fm);

    }

    @Override

    public Fragment getItem(int i) {
    Fragment fragment = new TabFragment();
    Bundle args = new Bundle();
    args.putInt(TabFragment.ARG_OBJECT, i);
    fragment.setArguments(args);
    return fragment;

}

    @Override
    public int getCount() {

    return NUM_ITEMS;

}

    @Override
    public CharSequence getPageTitle(int position) {
    String tabLabel = null;
    switch (position) {
        case 0:
            tabLabel = getString(R.string.label1);
            break;
        case 1:
            tabLabel = getString(R.string.label2);
            break;
        case 2:
            tabLabel = getString(R.string.label3);
            break;

    }

    return tabLabel;

    }
    }

     public static class TabFragment extends Fragment {
     public static final String ARG_OBJECT = "object";

     @Override
     public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {

    Bundle args = getArguments();
    int position = args.getInt(ARG_OBJECT);
    int tabLayout = 0;
    switch (position) {
        case 0:
            tabLayout = R.layout.tab1;
            break;
        case 1:
            tabLayout = R.layout.tab2;
            break;
        case 2:
            tabLayout = R.layout.tab3;
            break;
    }

    View rootView = inflater.inflate(tabLayout, container, false);
    return rootView;

    }

   }

   }

activity_main:

<android.support.v4.view.ViewPager             xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"/>

tab1.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/tab1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center">

<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="@string/body1" />

</LinearLayout>

tab2.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/tab2"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center">

<TextView
    android:id="@+id/textView2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:text="@string/body2" />

 </LinearLayout>

tab3.xml:

  <?xml version="1.0" encoding="utf-8"?>
  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/tab3"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center">

<TextView
    android:id="@+id/textView3"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:text="@string/body3" />

 </LinearLayout>

这篇关于Android的动作条选项卡 - 刷卡的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆