Android使用RadioGroup实现底部导航栏

Android使用RadioGroup实现底部导航栏,第1张

概述RadioGroup实现底部导航栏效果,如图:: 实现可最基本的导航栏功能,不能左右滑动,只能点击

RadioGroup实现底部导航栏效果,如图::

 


实现可最基本的导航栏功能,不能左右滑动,只能点击

1.内嵌的fragment的布局:

<?xml version="1.0" enCoding="utf-8"?><linearLayout xmlns:androID="http://schemas.androID.com/apk/res/androID" androID:orIEntation="vertical" androID:layout_wIDth="match_parent" androID:layout_height="match_parent"> <TextVIEw  androID:layout_wIDth="match_parent"  androID:layout_height="match_parent"  androID:gravity="center"  androID:textSize="50sp"  androID:textcolor="@color/colorPrimary"  androID:text="home"/></linearLayout>

2.fragment的activity代码:

public class FrHome extends Fragment { @Nullable @OverrIDe public VIEw onCreateVIEw(LayoutInflater inflater,@Nullable VIEwGroup container,@Nullable Bundle savedInstanceState) {  VIEw vIEw = LayoutInflater.from(getContext()).inflate(R.layout.fragment_home,container,false);  return vIEw; }}

以此为例根据需要编写不同的fragment布局等等。

3.装载fragment的界面布局如下(其中使用了selector进行实现点击改变图标和文字颜色):

点击改变文字颜色:

<?xml version="1.0" enCoding="utf-8"?><selector xmlns:androID="http://schemas.androID.com/apk/res/androID"> <item androID:state_checked="true" androID:color="#3F51B5"/> <item androID:state_checked="false" androID:color="#8f8f8f"/></selector>

点击改变图标:

<?xml version="1.0" enCoding="utf-8"?><selector xmlns:androID="http://schemas.androID.com/apk/res/androID"> <item androID:state_checked="true" androID:drawable="@mipmap/ic_history_checked"/> <item androID:state_checked="false" androID:drawable="@mipmap/ic_history_unchecked"/></selector>

界面布局:

<?xml version="1.0" enCoding="utf-8"?><relativeLayout xmlns:androID="http://schemas.androID.com/apk/res/androID" xmlns:tools="http://schemas.androID.com/tools" androID:layout_wIDth="match_parent" androID:layout_height="match_parent" xmlns:app="http://schemas.androID.com/apk/res-auto" tools:context="com.lotus.chartspagedemo.ActHome"> <FrameLayout  androID:ID="@+ID/frame_layout"  androID:layout_wIDth="match_parent"  androID:layout_above="@+ID/card_vIEw"  androID:layout_height="match_parent"/> <androID.support.v7.Widget.CardVIEw  androID:ID="@+ID/card_vIEw"  app:cardElevation="25dp"  androID:layout_alignParentBottom="true"  androID:layout_wIDth="match_parent"  androID:layout_height="wrap_content">  <RadioGroup   androID:paddingtop="5dp"   androID:ID="@+ID/tab_bar"   androID:background="@color/app_white"   androID:layout_wIDth="match_parent"   androID:layout_height="60dp"   androID:gravity="center"   androID:orIEntation="horizontal">   <Radiobutton    androID:ID="@+ID/tab_home"    androID:gravity="center"    androID:button="@null"    androID:drawabletop="@drawable/selector_tab_home"    androID:layout_wIDth="0dp"    androID:layout_weight="1"    androID:layout_height="match_parent"    androID:textcolor="@drawable/selector_tab_color"    androID:text="首页"/>   <Radiobutton    androID:ID="@+ID/tab_health"    androID:gravity="center"    androID:button="@null"    androID:drawabletop="@drawable/selector_tab_health"    androID:layout_wIDth="0dp"    androID:layout_weight="1"    androID:layout_height="match_parent"    androID:textcolor="@drawable/selector_tab_color"    androID:text="体检测评" />   <Radiobutton    androID:ID="@+ID/tab_personal"    androID:gravity="center"    androID:button="@null"    androID:drawabletop="@drawable/selector_tab_personal"    androID:layout_wIDth="0dp"    androID:layout_weight="1"    androID:layout_height="match_parent"    androID:textcolor="@drawable/selector_tab_color"    androID:text="个人中心"    />  </RadioGroup> </androID.support.v7.Widget.CardVIEw></relativeLayout>

4.装载fragment的界面的activity代码(加入双击返回键则退出应用):

public class ActHome extends FragmentActivity implements RadioGroup.OnCheckedchangelistener { @BindVIEw(R.ID.frame_layout) FrameLayout frameLayout; @BindVIEw(R.ID.tab_home) Radiobutton tabHome; @BindVIEw(R.ID.tab_health) Radiobutton tabHealth; @BindVIEw(R.ID.tab_personal) Radiobutton tabPersonal; @BindVIEw(R.ID.tab_bar) RadioGroup tabbar; public final static String ACTION_EXIT_SYstem = "sys_exit"; private FragmentManager manager; private FragmentTransaction transaction; private FrHome frHome; private FrHealth frHealth; private FrPersonal frPersonal; private long mExitTime; @OverrIDe protected voID onCreate(Bundle savedInstanceState) {  super.onCreate(savedInstanceState);  setContentVIEw(R.layout.activity_home);  ButterKnife.bind(this);  Radiobutton tabHome = (Radiobutton) tabbar.getChildAt(0);  tabHome.setChecked(true);  tabbar.setonCheckedchangelistener(this);  initFragment(); } private voID initFragment() {  manager = getSupportFragmentManager();  transaction = manager.beginTransaction();  frHome = new FrHome();  transaction.add(R.ID.frame_layout,frHome);  transaction.commit(); } @OverrIDe public voID onCheckedChanged(RadioGroup radioGroup,@IDRes int checkedID) {  switch (checkedID) {   case R.ID.tab_home:    FragmentTransaction ft1 = manager.beginTransaction();    hIDeAll(ft1);    if (frHome!=null){     ft1.show(frHome);    }else {     frHome=new FrHome();     ft1.add(R.ID.frame_layout,frHome);    }    ft1.commit();    break;   case R.ID.tab_health:    FragmentTransaction ft2 = manager.beginTransaction();    hIDeAll(ft2);    if (frHealth!=null){     ft2.show(frHealth);    }else {     frHealth = new FrHealth();     ft2.add(R.ID.frame_layout,frHealth);    }    ft2.commit();    break;   case R.ID.tab_personal:    FragmentTransaction ft5 = manager.beginTransaction();    hIDeAll(ft5);    if (frPersonal!=null){     ft5.show(frPersonal);    }else {     frPersonal = new FrPersonal();     ft5.add(R.ID.frame_layout,frPersonal);    }    ft5.commit();    break;  } } private voID hIDeAll(FragmentTransaction ft){  if (ft==null){   return;  }  if (frHome!=null){   ft.hIDe(frHome);  }  if (frHealth!=null){   ft.hIDe(frHealth);  }  if (frPersonal!=null){   ft.hIDe(frPersonal);  } } @OverrIDe public voID onBackpressed() {  if ((System.currentTimeMillis() - mExitTime) > 2000) {   Toast.makeText(ActHome.this,"再按一次退出程序",Toast.LENGTH_SHORT).show();   mExitTime = System.currentTimeMillis();  } else {   new Handler().postDelayed(new Runnable() {    @OverrIDe    public voID run() {     onExit(ActHome.this);    }   },500);  } } public static voID onExit(final Context context) {  try {   Intent intent = new Intent();   intent.setAction(context.getApplicationContext().getPackagename() + ACTION_EXIT_SYstem);   context.sendbroadcast(intent);   // MobclickAgent.onKillProcess(context);   new Handler().postDelayed(new Runnable() {    @OverrIDe    public voID run() {     System.exit(0);    }   },200);  } catch (Exception e) {   e.printstacktrace();  } }}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程小技巧。

总结

以上是内存溢出为你收集整理的Android使用RadioGroup实现底部导航栏全部内容,希望文章能够帮你解决Android使用RadioGroup实现底部导航栏所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

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

原文地址: https://outofmemory.cn/web/1144605.html

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

发表评论

登录后才能评论

评论列表(0条)

保存