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实现底部导航栏所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)