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();
}
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# RadioGroup底部导航栏
# RadioGroup导航栏
# android导航栏
# Android 弹出Dialog时隐藏状态栏和底部导航栏的方法
# 解决android 显示内容被底部导航栏遮挡的问题
# android 全屏去掉底部虚拟导航栏的方法
# 超简单的几行代码搞定Android底部导航栏功能
# Android用Scroller实现一个可向上滑动的底部导航栏
# Android程序开发之Fragment实现底部导航栏实例代码
# Android 中使用RadioGroup和Fragment实现底部导航栏的功能
# 双击
# 为例
# 如图
# 首页
# 大家多多
# 再按
# 内嵌
# 使用了
# selector
# f8f8f
# mipmap
# state_checked
# true
# drawable
# item
# container
# Bundle
# savedInstanceState
# LayoutInflater
# inflater
相关文章:
建站主机默认首页配置指南:核心功能与访问路径优化
php条件判断怎么写_ifelse和switchcase的使用区别【对比】
高性能网站服务器部署指南:稳定运行与安全配置优化方案
小型网站制作HTML,*游戏网站怎么搭建?
建站主机与服务器功能差异如何区分?
如何设置并定期更换建站之星安全管理员密码?
网站制作公司,橙子建站是合法的吗?
如何在Windows虚拟主机上快速搭建网站?
单页制作网站有哪些,朋友给我发了一个单页网站,我应该怎么修改才能把他变成自己的呢,请求高手指点迷津?
建站之星安全性能如何?防护体系能否抵御黑客入侵?
网站制作免费,什么网站能看正片电影?
浅析上传头像示例及其注意事项
头像制作网站在线制作软件,dw网页背景图像怎么设置?
实现点击下箭头变上箭头来回切换的两种方法【推荐】
三星网站视频制作教程下载,三星w23网页如何全屏?
想学网站制作怎么学,建立一个网站要花费多少?
如何快速搭建高效简练网站?
武汉网站如何制作,黄黄高铁武穴北站途经哪些村庄?
活动邀请函制作网站有哪些,活动邀请函文案?
如何快速搭建高效可靠的建站解决方案?
专业制作网站的公司哪家好,建立一个公司网站的费用.有哪些部分,分别要多少钱?
长沙做网站要多少钱,长沙国安网络怎么样?
上海网站制作网页,上海本地的生活网站有哪些?最好包括生活的各个方面的?
C#怎么创建控制台应用 C# Console App项目创建方法
在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?
潮流网站制作头像软件下载,适合母子的网名有哪些?
智能起名网站制作软件有哪些,制作logo的软件?
如何快速使用云服务器搭建个人网站?
制作公司内部网站有哪些,内网如何建网站?
如何选择香港主机高效搭建外贸独立站?
如何在Ubuntu系统下快速搭建WordPress个人网站?
如何在阿里云部署织梦网站?
建站主机助手选型指南:2025年热门推荐与高效部署技巧
,网站推广常用方法?
高端网站建设与定制开发一站式解决方案 中企动力
成都响应式网站开发,dw怎么把手机适应页面变成网页?
再谈Python中的字符串与字符编码(推荐)
建站主机服务器选型指南与性能优化方案解析
建站之星收费标准详解:套餐费用及年费价格表一览
如何快速登录WAP自助建站平台?
Python路径拼接规范_跨平台处理说明【指导】
音乐网站服务器如何优化API响应速度?
北京网站制作的公司有哪些,北京白云观官方网站?
已有域名如何快速搭建专属网站?
如何制作算命网站,怎么注册算命网站?
番禺网站制作公司哪家值得合作,番禺图书馆新馆开放了吗?
详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)
枣阳网站制作,阳新火车站打的到仙岛湖多少钱?
广州网站建站公司选择指南:建站流程与SEO优化关键词解析
如何选择域名并搭建高效网站?
*请认真填写需求信息,我们会在24小时内与您取得联系。