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);
}
});
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)