2017-04-01 136 views
0

我有一個包含2個片段和兩個包含recyclerview的片段的活動。 我需要實現輕掃手勢(當我從一側滑動到另一側時,需要更改碎片)。 此前我已添加滑動手勢,但是當我滑動回收站視圖時,將滾動而不是改變碎片。如何實現在android中包含2個片段的活動左右滑動?

你能在執行這一幫助..

感謝

+0

查看指南https://guides.codepath.com/android/google-play-style-tabs-using-tablayout –

回答

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> 

希望它能幫助!

+0

我使用片段而不是活動 – Techgeek

+0

此代碼用於包含2個片段的單個活動,在這兩個片段之間滑動的可能性。這不是你要求的嗎? –

+0

耶謝謝你的回答,但現在我們改變了我們的應用程序的設計,所以它使用片段,並在該片段中包含2個片段。每個片段都包含回收站視圖,因此您可以幫助解決這個問題 – Techgeek

0

剛剛使用Android TabLayout與ViewPager,你的問題就解決了:)

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> 

希望這會幫助你... :)