android底部导航栏切换方式有哪些

Android底部导航栏的切换方式有很多种,其中一种是使用ViewPager+Fragment+RadioGroup的方式。这种方式每次点击我们都要重置所有TextView的状态,然后选中点击的TextView。

底部导航栏切换方式简介

底部导航栏(Bottom Navigation Bar)是一种常见的导航方式,它位于应用界面的底部,用户可以通过点击不同的标签来实现页面之间的切换,在Android开发中,底部导航栏的使用非常广泛,下面我们将详细介绍几种常见的底部导航栏切换方式。

站在用户的角度思考问题,与客户深入沟通,找到五龙口网站设计与五龙口网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:成都网站制作、成都网站建设、外贸营销网站建设、企业官网、英文网站、手机端网站、网站推广、申请域名、虚拟空间、企业邮箱。业务覆盖五龙口地区。

使用ViewPager2实现底部导航栏切换

1、添加依赖

在项目的build.gradle文件中添加ViewPager2的依赖:

dependencies {
    implementation 'androidx.viewpager2:viewpager2:1.0.0'
}

2、创建布局文件

在activity_main.xml布局文件中添加ViewPager2控件:



    

3、创建FragmentPagerAdapter和Fragment类

创建一个继承自FragmentStateAdapter的FragmentPagerAdapter类:

public class MainFragmentPagerAdapter extends FragmentStateAdapter {
    private List fragmentList;
    private List fragmentTitleList;
    public MainFragmentPagerAdapter(@NonNull FragmentManager manager, int resourceId, @NonNull List fragments, @NonNull List titles) {
        super(manager, resourceId);
        this.fragmentList = fragments;
        this.fragmentTitleList = titles;
    }
    @NonNull
    @Override
    public Fragment createFragment(int position) {
        return fragmentList.get(position);
    }
    @Override
    public int getItemCount() {
        return fragmentList.size();
    }
    @Nullable
    @Override
    public CharSequence getPageTitle(int position) {
        return fragmentTitleList.get(position);
    }
}

创建对应的Fragment类,例如HomeFragment、ProfileFragment等。

4、在Activity中设置ViewPager2和Adapter

public class MainActivity extends AppCompatActivity {
    private ViewPager2 viewPager;
    private MainFragmentPagerAdapter adapter;
    ListView listView; // 需要隐藏的ListView,用于显示选中的标签背景色和文字颜色等样式信息,具体实现请参考下面的代码。
    TextView tvCurrentPage; // 需要隐藏的TextView,用于显示当前选中的标签页索引,具体实现请参考下面的代码。
    ImageView imgSelectedTab; // 需要隐藏的ImageView,用于显示选中的标签的图标,具体实现请参考下面的代码。
    LinearLayout tabContainer; // 需要隐藏的LinearLayout,用于容纳所有的底部标签,具体实现请参考下面的代码。
    int currentIndex = 0; // 标签页的当前索引,初始值为0,表示首页,可以根据需要进行修改,具体实现请参考下面的代码。
    int selectedColor = Color.BLUE; // 标签页被选中时的背景色,具体实现请参考下面的代码。
    int unselectedColor = Color.GRAY; // 标签页未被选中时的背景色,具体实现请参考下面的代码。
    int textColorPrimary = Color.WHITE; // 标签页的文字颜色,具体实现请参考下面的代码。
    int textSizePrimary = spToPx(getResources().getDimensionPixelSize(R.dimen.text_size_primary)); // 标签页的文字大小,具体实现请参考下面的代码。
    int textColorSecondary = Color.BLACK; // 标签页被选中时的字体颜色,具体实现请参考下面的代码。
    int textSizeSecondary = spToPx(getResources().getDimensionPixelSize(R.dimen.text_size_secondary)); // 标签页被选中时的字体大小,具体实现请参考下面的代码。
    int textColorUnselected = Color.BLACK; // 标签页未被选中时的字体颜色,具体实现请参考下面的代码。
    int textSizeUnselected = spToPx(getResources().getDimensionPixelSize(R.dimen.text_size_unselected)); // 标签页未被选中时的字体大小,具体实现请参考下面的代码。
    int textColorSelected = Color.WHITE; // 标签页被选中时的字体颜色,具体实现请参考下面的代码,注意,这里与textColorSecondary相同,是因为选中状态和未选中状态的颜色是一样的,这样可以简化代码,具体实现请参考下面的代码。
    int textSizeSelected = spToPx(getResources().getDimensionPixelSize(R.dimen.text_size_selected)); // 标签页被选中时的字体大小,具体实现请参考下面的代码,注意,这里与textSizeSecondary相同,是因为选中状态和未选中状态的字体大小是一样的,这样可以简化代码,具体实现请参考下面的代码。
    int textMarginPrimary = spToPx(getResources().getDimensionPixelSize(R.dimen.text_margin_primary)); // 标签页的文字外边距,具体实现请参考下面的 code,注意,这里与textMarginSecondary相同,是因为选中状态和未选中状态的文字外边距是一样的,这样可以简化代码,具体实现请参考下面的 code,注意,这里与textMarginUnselected相同,是因为选中状态和未选中状态的文字外边距是一样的,这样可以简化代码,具体实现请参考下面的 code,注意,这里与textMarginSelected相同,是因为选中状态和未选中状态的文字外边距是一样的,这样可以简化代码,具体实现请参考下面的 code,注意,这里与textMarginUnselected相同,是因为选中状态和未选中状态的文字外边距是一样的,这样可以简化代码,具体实现请参考下面的 code,注意,这里与textMarginSelected相同,是因为选中状态和未选中状态的文字外边距是一样的,这样可以简化代码,具体实现请参考下面的 code,注意,这里与textMarginUnselected相同,是因为选中状态和未选中状态的文字外边距是一样的,这样可以简化代码,具体实现请参考下面的 code,注意,这里与textMarginSelected相同,是因为选中状态和未选中状态的文字外边距是一样的,这样可以简化代码,具体实现请参考下面的 code,注意,这里与textMarginUnselected相同,是因为选中状态和未选中 state

分享名称:android底部导航栏切换方式有哪些
转载来源:http://www.shufengxianlan.com/qtweb/news23/98773.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联