当前位置: 首页 > 科技观察

Android底部导航栏实现(三)TextView+LinearLayout

时间:2023-03-16 16:53:14 科技观察

这里简单记录下通过TextView+LinearLayout+Fragment实现Android底部导航栏。布局代码mTHome.setOnClickListener(this);mTLocation.setOnClickListener(this);mTLike.setOnClickListener(this);mTMe.setOnClickListener(this);setDefaultFragment();//设置默认显示Fragment@OverridepublicvoidonClick(Viewview){resetTabState();//resetthetabstateswitch(view.getId()){caseR.id.tv_home:setTabState(mTHome,R.drawable.home_fill,getColor(R.color.colorPrimary));//设置Tab状态switchFrgment(0);//切换Fragmentbreak;caseR.id.tv_location:setTabState(mTLocation,R.drawable.location_fill,getColor(R.color.colorPrimary));switchFrgment(1);break;caseR.id.tv_like:setTabState(mTLike,R.drawable.like_fill,getColor(R.color.colorPrimary));switchFrgment(2);break;caseR.id.tv_person:setTabState(mTMe,R.drawable.person_fill,getColor(R.color.colorPrimary));switchFrgment(3);break;}}Fragment的切换/***switchthefragmentaccordtingtoid*@paramiid*/privatevoidswitchFrgment(inti){FragmentTransactiontransaction=getChildFragmentManager().beginTransaction();switch(i){case0:if(mHomeFragment==null){mHomeFragment=mHomeFragment.newInstance(getString(R.string.item_home));}transaction.replace(R.id.sub_content,mHomeFragment);break;case1:if(mLocationFragment==null){mLocationFragment=LocationFragment.newInstance(getString(R.string.item_location));}transaction.replace(R.id.sub_content,mLocationFragment);break;case2:if(mLikeFragment==null){mLikeFragment=LikeFragment.newInstance(getString(R.string.item_like));}transaction.replace(R.id.sub_content,mLikeFragment);break;case3:if(mPersonFragment==null){mPersonFragment=PersonFragment.newInstance(getString(R.string.item_person));}transaction.replace(R.id.sub_content,mPersonFragment);break;}transaction.commit();}这里值得注意的地方是To使用getChildFragmentManager(),否则不会显示切换Fragment的内容。设置Tab状态/***setthetabstateofbottomnavigationbar**@paramtextViewthetexttobeshown*@paramimagetheimage*@paramcolorthetextcolor*/privatevoidsetTabState(TextViewtextView,intimage,intcolor){textView.setCompoundDrawablesRelativeWith0IntrinsicBounds(,image,0,0);//调用requiresAPIlevel17textView.setTextColor(color);}/***reverttheimagecolorandtextcolortoblack*/privatevoidresetTabState(){setTabState(mTHome,R.drawable.home,getColor(R.color.black_1));setTabState(mTLocation,R.drawable.location,getColor(R.color.black_1)));setTabState(mTLike,R.drawable.like,getColor(R.color.black_1));setTabState(mTMe,R.drawable.person,getColor(R.color.black_1));}解释:没有太多这些文章里面很多文字说明,因为这些东西不难,而且常用。相信很多人都不陌生,说多了都是废话。直接看代码更清楚。