android之ViewPager2和底部菜单栏的实现
发布日期:2021-05-10 15:54:52 浏览次数:21 分类:精选文章

本文共 4937 字,大约阅读时间需要 16 分钟。

������ViewPager2���������������������������

���������������������

���build.gradle���������������������

implementation 'androidx.viewpager2:viewpager2:1.0.0'

������XML ������������

1. activity_main.xml

2. bottom_tab.xml

���������������������������������������

1. ������������������������������

���drawable���������������tab_selected���tab_unselected���������������������������������������������������������������������

���������������������selector���

2. ������������������

���drawable���������������tab_selected���tab_unselected������������������

���������������������selector���

������������ViewPager2������������

1. FragmentAdapter

public class MyFragmentAdapter extends FragmentStateAdapter {    private final List
list; public MyFragmentAdapter(@NonNull FragmentManager fragmentManager, @NonNull Lifecycle lifecycle, @NonNull List
list) { super(fragmentManager, lifecycle); this.list = list; } @NonNull @Override public Fragment createFragment(int position) { return list.get(position); } @Override public int getItemCount() { return list.size(); }}

2. MainActivity

public class MainActivity extends AppCompatActivity implements View.OnClickListener {    private ViewPager2 viewPager;    private LinearLayout tab1, tab2, tab3, tab4;    private ImageView tab1_iv, tab2_iv, tab3_iv, tab4_iv;    private TextView tab1_tv, tab2_tv, tab3_tv, tab4_tv;    private ImageView current_iv;    private TextView current_tv;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        initPager();        initView();    }    private void initView() {        tab1 = findViewById(R.id.tab1);        tab2 = findViewById(R.id.tab2);        tab3 = findViewById(R.id.tab3);        tab4 = findViewById(R.id.tab4);        tab1_iv = findViewById(R.id.tab1_iv);        tab2_iv = findViewById(R.id.tab2_iv);        tab3_iv = findViewById(R.id.tab3_iv);        tab4_iv = findViewById(R.id.tab4_iv);        tab1_tv = findViewById(R.id.tab1_tv);        tab2_tv = findViewById(R.id.tab2_tv);        tab3_tv = findViewById(R.id.tab3_tv);        tab4_tv = findViewById(R.id.tab4_tv);        tab1_iv.setSelected(true);        current_iv = tab1_iv;        tab1_tv.setSelected(true);        current_tv = tab1_tv;        tab1.setOnClickListener(this);        tab2.setOnClickListener(this);        tab3.setOnClickListener(this);        tab4.setOnClickListener(this);    }    private void initPager() {        viewPager = findViewById(R.id.vp_container);        viewPager.setAdapter(new MyFragmentAdapter(getSupportFragmentManager(), getLifecycle(), list));        viewPager.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() {            @Override            public void onPageSelected(int position) {                super.onPageSelected(position);                handlePageChange(position);            }        });    }    private void handlePageChange(int position) {        current_iv.setActivated(false);        current_tv.setActivated(false);        switch (position) {            case 0:                tab1_iv.setActivated(true);                current_iv = tab1_iv;                tab1_tv.setActivated(true);                current_tv = tab1_tv;                break;            case 1:                tab2_iv.setActivated(true);                current_iv = tab2_iv;                tab2_tv.setActivated(true);                current_tv = tab2_tv;                break;            case 2:                tab3_iv.setActivated(true);                current_iv = tab3_iv;                tab3_tv.setActivated(true);                current_tv = tab3_tv;                break;            case 3:                tab4_iv.setActivated(true);                current_iv = tab4_iv;                tab4_tv.setActivated(true);                current_tv = tab4_tv;                break;        }    }    @Override    public void onClick(View v) {        handlePageChange(v.getId());        switch (v.getId()) {            case R.id.tab1:                viewPager.setCurrentItem(0, false);                break;            case R.id.tab2:                viewPager.setCurrentItem(1, false);                break;            case R.id.tab3:                viewPager.setCurrentItem(2, false);                break;            case R.id.tab4:                viewPager.setCurrentItem(3, false);                break;        }    }}

������������������

������������������������������������������������������������������������������ViewPager2��������������������������� tabs, ������������������������������������������������

上一篇:android中自定义标题栏左边距问题
下一篇:RecyclerView中item居中显示的问题

发表评论

最新留言

逛到本站,mark一下
[***.202.152.39]2025年04月29日 18时54分52秒