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
相关文章:
高端智能建站公司优选:品牌定制与SEO优化一站式服务
历史网站制作软件,华为如何找回被删除的网站?
建站之星如何快速生成多端适配网站?
网站按钮制作软件,如何实现网页中按钮的自动点击?
Python如何创建带属性的XML节点
建站之星上传入口如何快速找到?
大型企业网站制作流程,做网站需要注册公司吗?
代刷网站制作软件,别人代刷火车票靠谱吗?
西安大型网站制作公司,西安招聘网站最好的是哪个?
学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?
rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted
如何有效防御Web建站篡改攻击?
小建面朝正北,A点实际方位是否存在偏差?
手机网站制作与建设方案,手机网站如何建设?
建站之星24小时客服电话如何获取?
如何安全更换建站之星模板并保留数据?
网站制作网站,深圳做网站哪家比较好?
极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?
个人网站制作流程图片大全,个人网站如何注销?
高端企业智能建站程序:SEO优化与响应式模板定制开发
家具网站制作软件,家具厂怎么跑业务?
美食网站链接制作教程视频,哪个教做美食的网站比较专业点?
贸易公司网站制作流程,出口贸易网站设计怎么做?
如何生成腾讯云建站专用兑换码?
建站之星价格显示格式升级,你的预算足够吗?
利用JavaScript实现拖拽改变元素大小
大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?
如何用PHP快速搭建高效网站?分步指南
如何高效配置IIS服务器搭建网站?
如何通过商城免费建站系统源码自定义网站主题?
专业网站建设制作报价,网页设计制作要考什么证?
如何在企业微信快速生成手机电脑官网?
如何通过FTP服务器快速搭建网站?
阿里云高弹*务器配置方案|支持分布式架构与多节点部署
如何通过智能用户系统一键生成高效建站方案?
c# 在高并发下使用反射发射(Reflection.Emit)的性能
如何在景安云服务器上绑定域名并配置虚拟主机?
魔毅自助建站系统:模板定制与SEO优化一键生成指南
活动邀请函制作网站有哪些,活动邀请函文案?
建站之星免费版是否永久可用?
开源网站制作软件,开源网站什么意思?
海南网站制作公司有哪些,海口网是哪家的?
黑客入侵网站服务器的常见手法有哪些?
重庆市网站制作公司,重庆招聘网站哪个好?
如何优化Golang Web性能_Golang HTTP服务器性能提升方法
如何通过IIS搭建网站并配置访问权限?
标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?
如何快速上传自定义模板至建站之星?
上海制作企业网站有哪些,上海有哪些网站可以让企业免费发布招聘信息?
智能起名网站制作软件有哪些,制作logo的软件?
*请认真填写需求信息,我们会在24小时内与您取得联系。