如何在Android中包含2个片段的活动左右滑动?

时间:2017-04-01 12:06:09

标签: android android-layout listview android-fragments

我的活动包含2个片段,两个片段都包含recyclerview。 我需要实现一个滑动手势(当我从一侧滑动到另一侧时,需要更改碎片)。 以前我添加了滑动手势,但是当我滑动回收器视图时,将滚动而不是更改碎片。

你能帮忙实现这个......

谢谢

4 个答案:

答案 0 :(得分:0)

将TabLayout与ViewPager一起使用。为活动中的两个片段创建两个选项卡。 http://www.androidhive.info/2015/09/android-material-design-working-with-tabs/

答案 1 :(得分:0)

这是你可以做到的:

public class YourActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.your_activity);

    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    ViewPager viewPager = (ViewPager) findViewById(R.id.view_pager);
    setupViewPager(viewPager);

    TabLayout tabLayout = (TabLayout) findViewById(R.id.tab_layout);
    tabLayout.setupWithViewPager(viewPager);
}

private void setupViewPager(ViewPager viewPager) {
    ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
    adapter.addFragment(new FragmentOne(), "Fragment One");
    adapter.addFragment(new FragmentTwo(), "Fragment Two");
    viewPager.setAdapter(adapter);
}

private class ViewPagerAdapter extends FragmentPagerAdapter {
    private final List<Fragment> fragmentList = new ArrayList<>();
    private final List<String> fragmentTitleList = new ArrayList<>();

    ViewPagerAdapter(FragmentManager fragmentManager) {super(fragmentManager);}

    @Override
    public Fragment getItem(int position) {return fragmentList.get(position);}

    @Override
    public int getCount() {
        return fragmentList.size();
    }

    void addFragment(Fragment fragment, String title) {

        fragmentList.add(fragment);
        fragmentTitleList.add(title);
    }

    @Override
    public CharSequence getPageTitle(int position) {
        return fragmentTitleList.get(position);
    }
}

}

这是.XML文件:

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/coordinator_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    tools:context=".YourActivity">

    <android.support.design.widget.AppBarLayout
    android:id="@+id/app_bar_layout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:paddingTop="8dp"
    android:theme="@style/AppTheme.AppBarOverlay">

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="?attr/colorPrimary"
        app:popupTheme="@style/AppTheme.PopupOverlay">
    </android.support.v7.widget.Toolbar>

    <android.support.design.widget.TabLayout
        android:id="@+id/tab_layout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:animateLayoutChanges="true"/>
    </android.support.design.widget.AppBarLayout>

    <android.support.v4.view.ViewPager
    android:id="@+id/view_pager"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:layout_behavior="@string/appbar_scrolling_view_behavior" />
</android.support.design.widget.CoordinatorLayout>

希望它有所帮助!

答案 2 :(得分:0)

只需在ViewPager上使用Android TabLayout,您的问题就会解决:)

答案 3 :(得分:0)

只需使用Tablayout和ViewPager

即可

这里的代码: -

public class DispatchOrderTab extends Fragment {
    public static TabLayout tabLayout;
    public static ViewPager viewPager;
    public static int int_items = 2 ;
    android.support.v4.app.FragmentManager mFragmentManager;

    View view;
    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        getActivity().setTitle("Order");

        View x =  inflater.inflate(R.layout.activity_dispatch_order_tab,null);
        tabLayout = (TabLayout) x.findViewById(R.id.sliding_tabs_dispatchtoken);
        viewPager = (ViewPager) x.findViewById(R.id.viewpagerdispatchtoken);
        viewPager. setOffscreenPageLimit(2);
        viewPager.setAdapter(new MyAdapter(getChildFragmentManager()));



        tabLayout.setupWithViewPager(viewPager);


        return x;

    }
    class MyAdapter extends FragmentPagerAdapter {
        Order order;
        Home home;
        public MyAdapter(FragmentManager fm) {
            super(fm);
        }

        /**
         * Return fragment with respect to Position .
         */

        @Override
        public Fragment getItem(int position)
        {
            switch (position){
                  //Here u can put your fragment files for swipe
                case 0 : return new Dispatchorder();
                case 1 : return new DispatchOrderTokenComplete();
            }
            return null;
        }

        @Override
        public int getCount() {

            return int_items;

        }

        /**
         * This method returns the title of the tab according to the position.
         */

        @Override
        public CharSequence getPageTitle(int position) {

            switch (position){
                case 0 :
                     //Here you can put the name of tabs.
                    return "Pending Order";
                case 1 :
                    return "Complete Order";
            }
            return null;
        }
    }

}

这里是xml: -

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    tools:context="com.Weal.sachin.omcom.TabFragment"
    android:orientation="vertical">
    <android.support.design.widget.TabLayout
        android:id="@+id/sliding_tabs_dispatchtoken"
        android:layout_width="match_parent"
        android:layout_height="60dp"
        android:background="#11977c"
        app:tabTextColor="#d2cece"
        app:tabSelectedTextColor="#fff"
        />
    <android.support.design.widget.CoordinatorLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <android.support.v4.view.ViewPager
            android:id="@+id/viewpagerdispatchtoken"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@color/white">
            android:background="@color/white">
            <FrameLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:id="@+id/framelayout1"></FrameLayout>
        </android.support.v4.view.ViewPager>

    </android.support.design.widget.CoordinatorLayout>
</LinearLayout>

希望这会对你有所帮助...... :)