国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

利用TabLayout+ViewPager+Fragment實現首頁側滑

chenatu / 1487人閱讀

摘要:一簡介使用起來就是我們通過創建給它填充多個,左右滑動時,切換不同的。

一、簡介
Viewpager使用起來就是我們通過創建adapter給它填充多個view,左右滑動時,切換不同的view。Google官方是建議我們使用Fragment來填充ViewPager的,這樣 可以更加方便的生成每個Page,以及管理每個Page的生命周期
二、引入相關依賴
implementation "com.android.support:design:28.0.0"

三、效果圖

四、代碼實現

xml



   

activity中通過id來尋找控件

 viewPager = findViewById(R.id.viewPager);
 tabLayout = findViewById(R.id.tabLayout);

創建ViewPager適配器

 public class PageAdapter extends FragmentPagerAdapter {

   List fragmentList = new ArrayList<>();
   List titleList = new ArrayList<>();

   public PageAdapter(FragmentManager fm,List fragmentList,List titleList) {
       super(fm);
       this.fragmentList = fragmentList;
       this.titleList = titleList;
   }

   @Override
   public Fragment getItem(int i) {
       return fragmentList.get(i);
   }

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

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

準備相關數據(fragment,title)

 private List getTitleList() {
       titleList.add("Tab1");
       titleList.add("Tab2");
       return titleList;
   }
 private List getFragmentList() {

       pageModels.add(new PageModel(R.layout.examplelayout1));
       pageModels.add(new PageModel(R.layout.examplelayout2));

       for (int i = 0; i < pageModels.size(); i++) {
           pageFragment = PageFragment.newInstance(pageModels.get(i).exampleLayoutRes);
           fragmentList.add(pageFragment);
       }
       return fragmentList;
   }

   class PageModel {
       @LayoutRes
       int exampleLayoutRes;

       public PageModel(@LayoutRes int exampleLayoutRes) {
           this.exampleLayoutRes = exampleLayoutRes;
       }
   }

設置viewPager適配器

 viewPager.setAdapter(new PageAdapter(getSupportFragmentManager(), getFragmentList(), getTitleList()));

設置tab標題

如果不設置此項,tab將無法顯示

 tabLayout.setupWithViewPager(viewPager);
 

五、附上源碼

布局相關:

activity_main




    

    




fragment_page




    


examplelayout1




    



examplelayout2




    



功能代碼

MainActivity

public class MainActivity extends AppCompatActivity {
    ViewPager viewPager;
    TabLayout tabLayout;
    List titleList = new ArrayList<>();
    List fragmentList = new ArrayList<>();
    List pageModels = new ArrayList<>();
    PageFragment pageFragment;

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

        doBisness();
    }

    private void doBisness() {
        viewPager = findViewById(R.id.viewPager);
        tabLayout = findViewById(R.id.tabLayout);
        viewPager.setAdapter(new PageAdapter(getSupportFragmentManager(), getFragmentList(), getTitleList()));

        tabLayout.setupWithViewPager(viewPager);
    }

    private List getTitleList() {
        titleList.add("Tab1");
        titleList.add("Tab2");
        return titleList;
    }

    private List getFragmentList() {

        pageModels.add(new PageModel(R.layout.examplelayout1));
        pageModels.add(new PageModel(R.layout.examplelayout2));

        for (int i = 0; i < pageModels.size(); i++) {
            pageFragment = PageFragment.newInstance(pageModels.get(i).exampleLayoutRes);
            fragmentList.add(pageFragment);
        }
        return fragmentList;
    }

    class PageModel {
        @LayoutRes
        int exampleLayoutRes;

        public PageModel(@LayoutRes int exampleLayoutRes) {
            this.exampleLayoutRes = exampleLayoutRes;
        }
    }
}

PageFragment

public class PageFragment extends Fragment {

    @LayoutRes
    int exampleLayoutRes;

    /**
     * Use this factory method to create a new instance of
     * this fragment using the provided parameters.
     */
    public static PageFragment newInstance(@LayoutRes int exampleLayoutRes) {
        PageFragment fragment = new PageFragment();
        Bundle args = new Bundle();
        args.putInt("exampleLayoutRes", exampleLayoutRes);
        fragment.setArguments(args);
        return fragment;
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if (getArguments() != null) {
            exampleLayoutRes = getArguments().getInt("exampleLayoutRes");
        }
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_page, container, false);
        ViewStub exampleStub = view.findViewById(R.id.exampleViewStub);
        exampleStub.setLayoutResource(exampleLayoutRes);
        exampleStub.inflate();
        return view;
    }

}

PageAdapter

public class PageAdapter extends FragmentPagerAdapter {

    List fragmentList = new ArrayList<>();
    List titleList = new ArrayList<>();

    public PageAdapter(FragmentManager fm,List fragmentList,List titleList) {
        super(fm);
        this.fragmentList = fragmentList;
        this.titleList = titleList;
    }

    @Override
    public Fragment getItem(int i) {
        return fragmentList.get(i);
    }

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

    @Nullable
    @Override
    public CharSequence getPageTitle(int position) {
        return titleList.get(position);
    }
}
六、項目github地址

https://github.com/fr1014/vie...

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/72694.html

相關文章

  • Android實現底部狀態欄切換

    摘要:開發過程中,特別是新開的項目,底部狀態欄的切換使用的頻率非常的高,主要的實現方式有這里我先介紹前面兩種實現方式,后面兩種后期再貼出實現方式。代碼地址底部公眾號回復底部狀態欄切換即可獲取。 Android開發過程中,特別是新開的項目,底部狀態欄的切換使用的頻率非常的高,主要的實現方式有: (1)、TabLayout + Fragment (2)、FragmentTabHo...

    UsherChen 評論0 收藏0
  • TabLayout的簡單運用和若干問題的解決

    摘要:初步實現之前在知乎上看到有人對微信的設計改動將使用頻率高的朋友圈消息提醒和公眾號這三個功能獨立出來放在首頁。 1、介紹和準備 我們在使用手機App時不難會看到這樣的頁面上面是一組起導航作用的標簽,點擊標簽就會切換到相應的頁面;在不同的頁面中滑動時,標簽的樣式(文字大小或者顏色)也會發生變化。這樣你任何時候都能一眼看出自己停留在哪個頁面。這個布局出鏡率實在太高了,我甚至敢說每個學Andr...

    PiscesYE 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<