setupWithViewPager,结果的数量有限,将显示在tablayout中

时间:2018-08-20 16:08:18

标签: android

我正在将ViewPager和setupWithViewPager用于实验室布局,

但是我只希望将整个列表中的一半片段显示在选项卡上,但是稍后需要访问该片段,因为我想在导航抽屉中使用它。

据我所知,setupWithViewPager将在呈现选项卡之前调用getCount和getPageTitle

这是代码

package a;

import android.annotation.SuppressLint;
import android.support.design.widget.TabLayout;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentStatePagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.Toolbar;

import a.fragment.ForgotPasswordFragment;
import a.fragment.LoginFragment;
import a.fragment.RegisterFragment;

import java.util.ArrayList;
import java.util.List;

public class Public extends AppCompatActivity {

    private ViewPager mViewPager;

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

        // Adding Toolbar to Main screen
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        // Setting ViewPager for each Tabs
        mViewPager = (ViewPager) findViewById(R.id.viewpager);
        PublicAdapter adapter = new PublicAdapter(getSupportFragmentManager());
        adapter.addFragment("Login");
        adapter.addFragment("Register");
        adapter.addFragment("Forgot Password");
        mViewPager.setAdapter(adapter);

        // Set Tabs inside Toolbar
        TabLayout tabs = (TabLayout) findViewById(R.id.tabs);
        tabs.setupWithViewPager(mViewPager);

        // Adding menu icon to Toolbar
        ActionBar supportActionBar = getSupportActionBar();
        if (supportActionBar != null) {
            supportActionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
            supportActionBar.setCustomView(R.layout.app_name);
            setTitle(R.string.app_name);
        }
    }

    @SuppressLint("MissingSuperCall")
    @Override
    public void onBackPressed()
    {
        // code here to show dialog
        //super.onBackPressed();  // optional depending on your needs
    }

    public ViewPager getViewPager() {
        if (null == mViewPager) {
            mViewPager = (ViewPager) findViewById(R.id.viewpager);
        }
        return mViewPager;
    }

    static class PublicAdapter extends FragmentStatePagerAdapter {
        private final List<String> mFragmentList = new ArrayList<>();

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

        @Override
        public int getItemPosition(Object object) {
            return POSITION_NONE;
        }

        @Override
        public Fragment getItem(int position) {
            Fragment fragment = null;
            switch(position) {
                case 0:
                    fragment = new LoginFragment();
                    break;
                case 1:
                    fragment = new RegisterFragment();
                    break;
                case 2:
                    fragment = new ForgotPasswordFragment();
                    break;
            }
            return fragment;
        }

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

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

        public void addFragment(String fragmentName) {
            mFragmentList.add(fragmentName);
        }

        public int getFragmentId(String fragmentName) {
            return mFragmentList.indexOf(fragmentName);
        }
    }
}

0 个答案:

没有答案