2015-07-09 2 views
3

Я собираюсь использовать андроидную библиотеку поддержки дизайна TabLayout, но я не знаю, как использовать прокрутку.Как реализовать андроид TabLayout поддержка дизайна libarary с просмотром Swipe

Вот мой код

XML:

<android.support.design.widget.TabLayout 
     android:id="@+id/tabLayout" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"/> 

Java:

TabLayout tabLayout; 

tabLayout = (TabLayout) findViewById(R.id.tabLayout); 
    tabLayout.addTab(tabLayout.newTab().setText("Tab 1")); 
    tabLayout.addTab(tabLayout.newTab().setText("Tab 2")); 
    tabLayout.addTab(tabLayout.newTab().setText("Tab 3")); 
+0

Это может помочь http://www.gadgetsaint.com/android/create-viewpager-tabs-android/#.WPuppVN97BI – ASP

ответ

3

Немного поздно для вечеринки, но для этого вам нужно использовать класс ViewPager и использовать фрагменты для каждого вида (под вкладкой). затем присоедините ViewPager к вашему TabLayout экземпляру и бинго! у вас есть ваш swiping tabLayout.

Вот некоторые рабочий код шахты с помощью двух вкладок:

MyActivity.java:

super.onCreate(savedInstanceState); 
setContentView(R.layout.main_layout); 
// Initializing tab and pager views 
TabLayout tabLayout = (TabLayout) findViewById(R.id.my_tab_layout); 
final ViewPager viewPager = (ViewPager) findViewById(R.id.my_view_pager); 

// Making new tabs and adding to tabLayout 
tabLayout.addTab(tabLayout.newTab().setText("First Tab")); 
tabLayout.addTab(tabLayout.newTab().setText("Second Tab")); 

// Adding fragments to a list 
List<Fragment> fragments = new Vector<Fragment>(); 
fragments.add(Fragment.instantiate(this, MyFirstTabFragment.class.getName())); 
fragments.add(Fragment.instantiate(this, MySecondTabFragment.class.getName())); 

// Attaching fragments into tabLayout with ViewPager 
viewPager.setAdapter(new SectionPagerAdapter(getSupportFragmentManager(), fragments)); 
tabLayout.setupWithViewPager(viewPager); 

SectionPagerAdapter.java

import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentManager; 
import android.support.v4.app.FragmentPagerAdapter; 

import java.util.List; 


public class SectionPagerAdapter extends FragmentPagerAdapter { 
    private List<Fragment> fragments; 

    public SectionPagerAdapter(FragmentManager fm, List<Fragment> fragments) { 
     super(fm); 
     this.fragments = fragments; 
    } 

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

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

    @Override 
    public CharSequence getPageTitle(int position) { 
     switch (position) { 
      case 0: 
       return "First Tab"; 
      case 1: 
      default: 
       return "Second Tab"; 
     } 
    } 
} 

MyFirstTabFragment.java:

public class MyFirstTabFragment extends Fragment { 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     // Declare your first fragment here 
     return inflater.inflate(R.layout.my_first_fragment_layout, container, false); 
    } 
} 

MySecondTabFragment.java:

public class MySecondTabFragment extends Fragment { 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     // Declare your second fragment here 
     return inflater.inflate(R.layout.my_second_fragment_layout, container, false); 
    } 
} 

main_layout.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       android:orientation="vertical" 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent"> 

    <!-- Declare android.support.v7.widget.Toolbar or... here --> 

    <android.support.design.widget.TabLayout 
      android:id="@+id/my_tab_layout" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content"/> 
    <android.support.v4.view.ViewPager 
      android:id="@+id/my_view_pager" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_below="@id/my_tab_layout"/> 
</RelativeLayout> 

my_first_fragment_layout.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent"> 
    <!-- Declare first tab layout here --> 
</RelativeLayout> 

my_second_fragment_layout.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent"> 
    <!-- Declare second tab layout here --> 
</RelativeLayout> 

ПРИМЕЧАНИЕ: Здесь мы используем ViewPager, Fragment, FragmentManager и FragmentPagerAdapter из библиотеки поддержки v4.

Надеюсь, это поможет.

+0

спасибо. Вы сделали простой учебник об этом на весь интернет. Еще раз спасибо. – iboalali

1

Добавьте эту строку в код Java: - tabLayout.setTabMode(TabLayout.MODE_SCROLLABLE);

Или же вы можете укажите это в коде xml: - app:tabMode="scrollable"

+0

Это приведет к тому, что сами вкладки будут прокручиваться, не просматривая изображения под вкладками. – Sdghasemi

+0

Спасибо, что помогло мне решение. –

+0

@Sourabh не беспокоит мат .. :) –

Смежные вопросы