How to do expandable Tabs in Android Studio

0

I have the following problem with the tabs in my application.

The truth is not because the menus are narrowing, I would like them to be able to be displayed from one side to the other as in a scroll without the texts separating, but they are all grouped according to the size of the screen.

MainActivi'public class ty extends AppCompatActivity {

    private SectionsPagerAdapter mSectionsPagerAdapter;

private ViewPager mViewPager;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());
    mViewPager = (ViewPager) findViewById(R.id.container);
    mViewPager.setAdapter(mSectionsPagerAdapter);

    TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs);
    tabLayout.setupWithViewPager(mViewPager);


}

public class SectionsPagerAdapter extends FragmentPagerAdapter {

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

    @Override
    public Fragment getItem(int position) {

        switch (position) {
            case 0:
                Tab1 tab1 = new Tab1();
                return tab1;
            case 1:
                Tab2 tab2 = new Tab2();
                return tab2;
            case 2:
                Tab3 tab3 = new Tab3();
                return tab3;
            case 3:
                Tab4 tab4 = new Tab4();
                return tab4;
            case 4:
                Tab5 tab5 = new Tab5();
                return tab5;
            default:
                return null;
        }

    }

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


    @Override
    public CharSequence getPageTitle(int position) {
        switch (position) {
            case 0:
                return "En Vivo";
            case 1:
                return "Facebook";
            case 2:
                return "Twitter";
            case 3:
                return "YouTube";
            case 4:
                return "Sitio Web";
        }
        return null;
    }

}

}

The XML is as follows:

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

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

    </android.support.v7.widget.Toolbar>

    <android.support.design.widget.TabLayout
            android:id="@+id/tabs"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:overScrollMode="always" >

    </android.support.design.widget.TabLayout>

</android.support.design.widget.AppBarLayout>

<android.support.v4.view.ViewPager
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
     />    

'

    
asked by Luis Quispe 20.07.2017 в 21:24
source

1 answer

-1

This is the code that I use:

In my activity:

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

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

The setupViewPAger method:

private void setupViewPager(ViewPager viewPager) {
    PagerAdapter adapter = new PagerAdapter(getSupportFragmentManager());
    adapter.addFragment(new Fragment_Cubo2x2(), "Cubo 2x2");
    adapter.addFragment(new Fragment_Cubo3x3(), "Cubo 3x3");
    adapter.addFragment(new Fragment_Cubo4x4(), "Cubo 4x4");
    adapter.addFragment(new Fragment_Cubo5x5(), "Cubo 5x5");
    adapter.addFragment(new Fragment_CuboGear(), "Cubo Gear");
    adapter.addFragment(new Fragment_CuboPiraminx(), "Cubo Piraminx");
    adapter.addFragment(new Fragment_CuboMasterPiraminx(), "Cubo Master Piraminx");
    adapter.addFragment(new Fragment_CuboMegaminx(), "Cubo Megaminx");
    viewPager.setAdapter(adapter);
}

And PagerAdapter class:

public class PagerAdapter extends FragmentPagerAdapter {
private final List<Fragment> mFragmentList = new ArrayList<>();
private final List<String> mFragmentTitleList = new ArrayList<>();

public PagerAdapter(FragmentManager manager) {
    super(manager);
}

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

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

public void addFragment(Fragment fragment, String title) {
    mFragmentList.add(fragment);
    mFragmentTitleList.add(title);
}

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

}

The layout has the viewPager declared like this:

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

With that I get what you ask for, a tablayout with the texts occupying its full width and looking correctly.

Try and tell me how, and I hope you solve the problem.

Greetings.

    
answered by 21.07.2017 в 11:49