同一片段中的多个ViewPager

时间:2017-07-27 12:29:54

标签: java android android-fragments android-viewpager

我创建了两个customViews类,每个customview类都有一个view pager。 现在我想在同一个活动中包含这两个自定义视图类。问题是一个pagerview工作正常,但另一个寻呼机没有显示任何视图?

Anyone knowing how to add multiple viewpager in same activity.?
Please help.

我的客户观点

public class TrainingResultsTopView extends LinearLayout {

    Context context;
    View rootView;
    private ViewPager viewPager;
    private TabLayout tabLayout;
    private PieChartFragment monthFragment;
    private PieChartFragment annualFragment;
    private PieChartFragment allTimeFragment;

    public TrainingResultsTopView(Context context) {
        super(context);
        initView(context);
    }

    public TrainingResultsTopView(Context context, AttributeSet attrs) {
        super(context, attrs);
        initView(context);
    }

    public TrainingResultsTopView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        initView(context);
    }

    public TrainingResultsTopView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
        super(context, attrs, defStyleAttr, defStyleRes);
        initView(context);
    }

    private void initView(Context context) {
        this.context = context;
        LayoutInflater inflater = LayoutInflater.from(context);
        rootView = inflater.inflate(R.layout.dashboard_top_view, this, true);
        viewPager = (ViewPager) rootView.findViewById(R.id.viewpager);
        viewPager.setOffscreenPageLimit(3);
        tabLayout = (TabLayout) rootView.findViewById(R.id.tabs);
        tabLayout.setupWithViewPager(viewPager);

        setFragmentsToPager();
        customizeTabs(inflater);
    }


//    private void bindDataToFragments() {
//        monthFragment.bindLeaderboardData(leaderboardModelMonthly);
//        annualFragment.bindLeaderboardData(leaderboardModelAnnually);
//        allTimeFragment.bindLeaderboardData(leaderboardModelAllTime);
//    }

    private void setFragmentsToPager() {
        ViewPagerAdapter adapter = new ViewPagerAdapter(((AppCompatActivity)context).getSupportFragmentManager());
        monthFragment = new PieChartFragment();
        annualFragment = new PieChartFragment();
        allTimeFragment = new PieChartFragment();
        adapter.addFragment(monthFragment, "Last 30 Days");
        adapter.addFragment(annualFragment, "This Year");
        adapter.addFragment(allTimeFragment, "All-Time");
        viewPager.setAdapter(adapter);
    }

    private void customizeTabs(LayoutInflater inflater) {
        LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
        lp.setMargins(0,0,0,0);

        TextView tv1 = (TextView) inflater.inflate(R.layout.textview_dashboard_tab, null);
        tv1.setTypeface(Constants.appTypeface);
        tv1.setText("Last 30 Days");
        tv1.setGravity(Gravity.CENTER);
        tv1.setLayoutParams(lp);
        TextView tv2 = (TextView) inflater.inflate(R.layout.textview_dashboard_tab, null);
        tv2.setTypeface(Constants.appTypeface);
        tv2.setText("This Year");
        tv2.setGravity(Gravity.CENTER);
        tv2.setLayoutParams(lp);
        TextView tv3 = (TextView) inflater.inflate(R.layout.textview_dashboard_tab, null);
        tv3.setTypeface(Constants.appTypeface);
        tv3.setText("All-Time");
        tv3.setGravity(Gravity.CENTER);
        tv3.setLayoutParams(lp);

        tabLayout.getTabAt(0).setCustomView(tv1);
        tabLayout.getTabAt(1).setCustomView(tv2);
        tabLayout.getTabAt(2).setCustomView(tv3);
    }


}






And

public class ActionBeaconRatingTopView extends LinearLayout {

    Context context;
    View rootView;
    private CustomViewPager viewPager;
    private TabLayout tabLayout;
    private ActionBeaconRatingFragment monthFragment;
    private ActionBeaconRatingFragment annualFragment;
    private ActionBeaconRatingFragment allTimeFragment;

    public ActionBeaconRatingTopView(Context context) {
        super(context);
        initView(context);
    }

    public ActionBeaconRatingTopView(Context context, AttributeSet attrs) {
        super(context, attrs);
        initView(context);
    }

    public ActionBeaconRatingTopView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        initView(context);
    }

    public ActionBeaconRatingTopView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
        super(context, attrs, defStyleAttr, defStyleRes);
        initView(context);
    }

    private void initView(Context context) {
        this.context = context;
        LayoutInflater inflater = LayoutInflater.from(context);
        rootView = inflater.inflate(R.layout.dashboard_top_view, this, true);

        viewPager = (CustomViewPager) rootView.findViewById(R.id.viewpager);
        viewPager.setOffscreenPageLimit(3);
        viewPager.setPagingEnabled(false);
        tabLayout = (TabLayout) rootView.findViewById(R.id.tabs);
        tabLayout.setupWithViewPager(viewPager);

        setFragmentsToPager();
        customizeTabs(inflater);
    }


//    private void bindDataToFragments() {
//        monthFragment.bindLeaderboardData(leaderboardModelMonthly);
//        annualFragment.bindLeaderboardData(leaderboardModelAnnually);
//        allTimeFragment.bindLeaderboardData(leaderboardModelAllTime);
//    }

    private void setFragmentsToPager() {
        ViewPagerAdapter adapter = new ViewPagerAdapter(((AppCompatActivity)context).getSupportFragmentManager());
        monthFragment = new ActionBeaconRatingFragment();
        annualFragment = new ActionBeaconRatingFragment();
        allTimeFragment = new ActionBeaconRatingFragment();
        adapter.addFragment(monthFragment, "Last 30 Days");
        adapter.addFragment(annualFragment, "This Year");
        adapter.addFragment(allTimeFragment, "All-Time");
        viewPager.setAdapter(adapter);
    }

    private void customizeTabs(LayoutInflater inflater) {
        LayoutParams lp = new LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
        lp.setMargins(0,0,0,0);

        TextView tv1 = (TextView) inflater.inflate(R.layout.textview_dashboard_tab, null);
        tv1.setTypeface(Constants.appTypeface);
        tv1.setText("Last 30 Days");
        tv1.setGravity(Gravity.CENTER);
        tv1.setLayoutParams(lp);
        TextView tv2 = (TextView) inflater.inflate(R.layout.textview_dashboard_tab, null);
        tv2.setTypeface(Constants.appTypeface);
        tv2.setText("This Year");
        tv2.setGravity(Gravity.CENTER);
        tv2.setLayoutParams(lp);
        TextView tv3 = (TextView) inflater.inflate(R.layout.textview_dashboard_tab, null);
        tv3.setTypeface(Constants.appTypeface);
        tv3.setText("All-Time");
        tv3.setGravity(Gravity.CENTER);
        tv3.setLayoutParams(lp);

        tabLayout.getTabAt(0).setCustomView(tv1);
        tabLayout.getTabAt(1).setCustomView(tv2);
        tabLayout.getTabAt(2).setCustomView(tv3);
    }

我想在同一个片段中添加这些视图。在一个时间,一个将是可见的。

1 个答案:

答案 0 :(得分:1)

试用本教程:< enter link description here