如何添加轻扫在标签 [英] How to add swipe in tabs

查看:138
本文介绍了如何添加轻扫在标签的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用的支持库创建我的应用程序的操作栏。我已经添加在操作栏中的操作多数民众赞成在工作完美。现在我编辑低于标签。但是,改变标签我需要点击选项卡。我想补充刷卡在这个code。但对我来说很难,因为我从一个链接,多数民众赞成采取仅供参考表明添加标签和改变他们对点击它们。所以,请帮助我的人,从屏幕中添加刷卡试图改变标签。

code -

 公共类类型扩展ActionBarActivity {

    @覆盖
    公共无效的onCreate(包savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        的setContentView(R.layout.types);
        setupTabs();
    }


    私人无效setupTabs(){
        android.support.v7.app.ActionBar AB = getSupportActionBar();
        ab.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
        TAB键= ab.newTab()
        .setText(R.string.frag1).setTabListener(新MyTabListener(这一点,Type1.class.getName()));
        ab.addTab(标签);

        标签= ab.newTab()
        .setText(R.string.frag2).setTabListener(新MyTabListener(这一点,Type2.class.getName()));
        ab.addTab(标签);

    }


    @覆盖
    公共布尔onCreateOptionsMenu(功能菜单){
        //充气操作栏中使用的菜单项
        MenuInflater充气= getMenuInflater();
        inflater.inflate(R.menu.main,菜单);
        返回super.onCreateOptionsMenu(菜单);
    }

     @覆盖
        公共布尔onOptionsItemSelected(菜单项项){
        开关(item.getItemId()){
        案例R.id.action_search:
        homeActivity();
        返回true;

        默认:
        返回super.onOptionsItemSelected(项目);
        }
     }

     公共无效homeActivity(){
        Toast.makeText(这一点,家庭选项Selexted,Toast.LENGTH_SHORT).show();
     }

私有类MyTabListener实现ActionBar.TabListener
{
    私人片段mFragment;
    私人最终活动mActivity;
    私人最终字符串mFragName;

    公共MyTabListener(活动活动,串fragName)
    {
        mActivity =活动;
        mFragName = fragName;
    }

    @覆盖
    公共无效onTabReselected(标签选项卡,
        FragmentTransaction英尺)
    {
    }

    @覆盖
    公共无效onTabSelected(标签选项卡,
        FragmentTransaction英尺)
    {
        mFragment = Fragment.instantiate(mActivity,mFragName);
        ft.add(android.R.id.content,mFragment);
    }

    @覆盖
    公共无效onTabUnselected(TAB键,FragmentTransaction英尺)
    {
        ft.remove(mFragment);
        mFragment = NULL;
    }
}
 

解决方案

创建ViewPagerAdapter类 -

 公共类ViewPagerAdapter扩展FragmentStatePagerAdapter {

    私人最终诠释PAGES = 4;

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

    @覆盖
    公共片段的getItem(INT位置){
        开关(位置){
            情况下0:
                返回新类型1();
            情况1:
                返回新类型2();
            案例2:
                返回新类型3();
            案例3:
                返回新类型4();
            默认:
                抛出新抛出:IllegalArgumentException(以下简称项目位置应该小于或等于:+页);
        }
    }

    @覆盖
    公众诠释getCount将(){
        返回页面;
    }
}
 

然后在你的Typle类 -

 公共类类型扩展ActionBarActivity {

    私人ViewPager viewPager;

    @覆盖
    公共无效的onCreate(包savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        的setContentView(R.layout.pagerad);
        viewPager =(ViewPager)findViewById(R.id.pager);
        AB = getSupportActionBar();
        ab.setDisplayHomeAsUpEnabled(真正的);
        ab.setDisplayShowHomeEnabled(真正的);
        viewPager.setOnPageChangeListener(onPageChangeListener);
        viewPager.setAdapter(新ViewPagerAdapter(getSupportFragmentManager()));
        addActionBarTabs();
    }

    私人ViewPager.SimpleOnPageChangeListener onPageChangeListener =新ViewPager.SimpleOnPageChangeListener(){
    @覆盖
    公共无效onPageSelected(INT位置){
    super.onPageSelected(位置);
    ab.setSelectedNavigationItem(位置);
      }
    };

    @覆盖
    公共布尔onCreateOptionsMenu(功能菜单){
        //充气操作栏中使用的菜单项
        MenuInflater充气= getMenuInflater();
        inflater.inflate(R.menu.main,菜单);
        返回super.onCreateOptionsMenu(菜单);
    }

    @覆盖
        公共布尔onOptionsItemSelected(菜单项项){
        开关(item.getItemId()){
        案例R.id.action_search:
        homeActivity();
        返回true;

        默认:
        返回super.onOptionsItemSelected(项目);
        }
     }

     公共无效homeActivity(){
        Toast.makeText(这一点,家庭选项Selexted,Toast.LENGTH_SHORT).show();
     }

    私人无效addActionBarTabs(){
        AB = getSupportActionBar();
        的String []选项卡= {类型1,2型,TYPE 3,4型};
        对于(字符串tabTitle:标签){
            。ActionBar.Tab标签= ab.newTab()的setText(tabTitle).setTabListener(tabListener);
            ab.addTab(标签);
        }
        ab.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
    }

    私人ActionBar.TabListener tabListener =新ActionBar.TabListener(){
        @覆盖
        公共无效onTabSelected(ActionBar.Tab选项卡,FragmentTransaction英尺){
            viewPager.setCurrentItem(tab.getPosition());
        }

        @覆盖
        公共无效onTabUnselected(ActionBar.Tab选项卡,FragmentTransaction英尺){
        }

        @覆盖
        公共无效onTabReselected(ActionBar.Tab选项卡,FragmentTransaction英尺){
        }
    };

}
 

最后,创建pagerad 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.ViewPager>
 

然后创建一个像每个类型的片段 -

 公共类类型1扩展片段{

    @覆盖
    公共查看onCreateView(LayoutInflater充气,容器的ViewGroup,捆绑savedInstanceState){
     查看rootView = inflater.inflate(R.layout.type,集装箱,FALSE)
     返回rootView;
     }
}
 

I am using support library to create action bar in my app. I have added actions in action bar thats working perfect. Now I edit tabs below that. But for changing tabs I have to click on tabs. I want to add swipe in this code. But Its difficult for me as I am taking reference from one link thats only show to add tabs and change them with on click on them. So please someone help me to add swipe from screen to change tabs.

Code-

public class Types extends ActionBarActivity {

    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.types);
        setupTabs();        
    }


    private void setupTabs() {
        android.support.v7.app.ActionBar ab = getSupportActionBar();
        ab.setNavigationMode( ActionBar.NAVIGATION_MODE_TABS );
        Tab tab = ab.newTab()
        .setText( R.string.frag1).setTabListener(new MyTabListener(this, Type1.class.getName()));
        ab.addTab(tab);

        tab = ab.newTab()
        .setText( R.string.frag2).setTabListener(new MyTabListener( this, Type2.class.getName() ) );
        ab.addTab(tab);

    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu items for use in the action bar
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.main, menu);
        return super.onCreateOptionsMenu(menu);
    }

     @Override
        public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
        case R.id.action_search:
        homeActivity();
        return true;

        default:
        return super.onOptionsItemSelected(item);   
        }
     }

     public void homeActivity() {
        Toast.makeText(this, "Home Option Selexted", Toast.LENGTH_SHORT).show();
     }

private class MyTabListener implements ActionBar.TabListener
{
    private Fragment mFragment;
    private final Activity mActivity;
    private final String mFragName;

    public MyTabListener( Activity activity, String fragName )
    {
        mActivity = activity;
        mFragName = fragName;
    }

    @Override
    public void onTabReselected( Tab tab, 
        FragmentTransaction ft )
    {    
    }

    @Override
    public void onTabSelected( Tab tab, 
        FragmentTransaction ft )
    {
        mFragment = Fragment.instantiate( mActivity, mFragName );
        ft.add( android.R.id.content, mFragment );
    }

    @Override
    public void onTabUnselected( Tab tab, FragmentTransaction ft )
    {
        ft.remove( mFragment );
        mFragment = null;
    }
}

解决方案

Create ViewPagerAdapter class-

public class ViewPagerAdapter extends FragmentStatePagerAdapter {

    private final int PAGES = 4;

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

    @Override
    public Fragment getItem(int position) {
        switch (position) {
            case 0:
                return new Type1();
            case 1:
                return new Type2();
            case 2:
                return new Type3();
            case 3:
                return new Type4();
            default:
                throw new IllegalArgumentException("The item position should be less or equal to:" + PAGES);
        }
    }

    @Override
    public int getCount() {
        return PAGES;
    }
}

Then in your Typle class-

public class Types extends ActionBarActivity {

    private ViewPager viewPager;

    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.pagerad);
        viewPager = (ViewPager) findViewById(R.id.pager);
        ab = getSupportActionBar();
        ab.setDisplayHomeAsUpEnabled(true);
        ab.setDisplayShowHomeEnabled(true);
        viewPager.setOnPageChangeListener(onPageChangeListener);
        viewPager.setAdapter(new ViewPagerAdapter(getSupportFragmentManager()));
        addActionBarTabs();
    }

    private ViewPager.SimpleOnPageChangeListener onPageChangeListener = new ViewPager.SimpleOnPageChangeListener() {
    @Override
    public void onPageSelected(int position) {
    super.onPageSelected(position);
    ab.setSelectedNavigationItem(position);
      }
    };

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu items for use in the action bar
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.main, menu);
        return super.onCreateOptionsMenu(menu);
    }

    @Override
        public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
        case R.id.action_search:
        homeActivity();
        return true;

        default:
        return super.onOptionsItemSelected(item);   
        }
     }

     public void homeActivity() {
        Toast.makeText(this, "Home Option Selexted", Toast.LENGTH_SHORT).show();
     }

    private void addActionBarTabs() {
        ab = getSupportActionBar();
        String[] tabs = { "TYPE 1", "TYPE 2", "TYPE 3", "TYPE 4" };
        for (String tabTitle : tabs) {
            ActionBar.Tab tab = ab.newTab().setText(tabTitle).setTabListener(tabListener);
            ab.addTab(tab);
        }
        ab.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
    }

    private ActionBar.TabListener tabListener = new ActionBar.TabListener() {
        @Override
        public void onTabSelected(ActionBar.Tab tab, FragmentTransaction ft) {
            viewPager.setCurrentItem(tab.getPosition());
        }

        @Override
        public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction ft) {
        }

        @Override
        public void onTabReselected(ActionBar.Tab tab, FragmentTransaction ft) {
        }
    };

}   

Finally create pagerad 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.ViewPager>

Then create Each Type fragment like-

public class Type1 extends Fragment{

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
     View rootView = inflater.inflate(R.layout.type, container, false)
     return rootView;
     }
}

这篇关于如何添加轻扫在标签的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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