簡體   English   中英

同一片段中的多個ViewPager

[英]Multiple ViewPager in same Fragment

我創建了兩個customViews類,每個customview類中都有視圖尋呼機。 現在,我想在同一活動中包括這兩個自定義視圖類。 問題是一個pagerview工作正常,但另一個pager沒有顯示任何視圖?

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

我的customeViews是

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);
    }

我想在同一片段中添加這些視圖。 一次將可見。

試試本教程:< 在此處輸入鏈接描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM