Android对于Fragment的使用以及底部导航栏问题

Android对于Fragment的使用以及底部导航栏问题,第1张

fragment

一直提示fragment类型不对

该错误是在我们创建的fragment类文件中导错了包

底部导航栏不显示文字

在该处加上app:labelVisibilityMode="labeled"就可以全部显示了

原因:底部导航栏的类别多于三个会不显示,只会选中选中的那个。

参考:

安卓底部导航栏不显示文字问题(Kotlin)_心脏dance的博客-CSDN博客

点击底部导航栏后fragment变化但是导航栏选中的图标未发生变化

原因是导航栏监听事件要返回true,返回false的话xml文件无法接收响应。

 private BottomNavigationView.OnNavigationItemSelectedListener mon= (
            BottomNavigationView.OnNavigationItemSelectedListener) item -> {
        FragmentManager fm=getFragmentManager();
        FragmentTransaction transaction =fm.beginTransaction();
        switch (item.getItemId()){
            case R.id.navigation_shouye:
                ShouyeFragment shouyeFragment=new ShouyeFragment();
                transaction.replace(R.id.fragment,shouyeFragment);
                break;
            case R.id.navigation_xiaoxi:
                XiaoxiFragment xiaoxiFragment=new XiaoxiFragment();
                transaction.replace(R.id.fragment,xiaoxiFragment);
                break;
            case R.id.navigation_biji:
                BijiFragment bijiFragment=new BijiFragment();
                transaction.replace(R.id.fragment,bijiFragment);
                break;
            case R.id.navigation_my:
                MyFragment myFragment=new MyFragment();
                transaction.replace(R.id.fragment,myFragment);
                break;
        }
        transaction.commit();
        return true;
    };
改变选中和未选中字体大小

参考连接:

​​​​​​​Android BottomNavigationView修改导航文字大小无效的解决方法_喝烧酒的兔子的博客-CSDN博客_bottomnavigationview 字体大小

修改导航栏文字颜色

创建文件夹和文件

 select.xml加入


    
    

在下面加入

app:itemIconTint="@color/select"
app:itemTextColor="@color/select"

就可以了

    
OnNavigationItemSelectedListener弃用问题


​​​​​​​OnNavigationItemSelectedListener方法已经被弃用,并且它和viewpager2一起用会冲突,在这里我们可以替换为setOnItemSelectedListener实现fragment切换效果

   //底部导航栏点击监听事件,在activity里面调用该方法
 private void navigation() {
        navigation.setOnItemSelectedListener(item -> {
            switch (item.getItemId()){
                case R.id.navigation_shouye:
                    viewPager2.setCurrentItem(0);
                    toolbar.setTitle("首页");
                    break;
                case R.id.navigation_xiaoxi:
                    viewPager2.setCurrentItem(1);
                    toolbar.setTitle("消息");
                    break;
                case R.id.navigation_biji:
                    viewPager2.setCurrentItem(2);
                    toolbar.setTitle("笔记");
                    break;
                case R.id.navigation_my:
                    viewPager2.setCurrentItem(3);
                    toolbar.setTitle("我的");
                    break;
            }
            return true;
        });
        navigation.setSelectedItemId(R.id.navigation_shouye);
    }
fragment监听事件

//自定义方法,通过在activity调用该方法实现监听事件
public void listen(){
                viewPager.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() {
            /**
             * 滑动监听
             */
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
                super.onPageScrolled(position, positionOffset, positionOffsetPixels);
                
            }
            /**
             * 监听滑动到对应索引值的页面
             */
            @Override
            public void onPageSelected(int position) {
                super.onPageSelected(position);
                
            }
            /**
             * 滑动状态监听
             */
            @Override
            public void onPageScrollStateChanged(int state) {
                super.onPageScrollStateChanged(state);
               
            }
        });

    }

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/992471.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存