android开发中如何实现底部导航
发表于:2025-11-20 作者:千家信息网编辑
千家信息网最后更新 2025年11月20日,小编给大家分享一下 android开发中如何实现底部导航,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!使用LinearLa
千家信息网最后更新 2025年11月20日android开发中如何实现底部导航
小编给大家分享一下 android开发中如何实现底部导航,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
使用LinearLayout 底部布局+p_w_picpathView 实现
底部四个主导航页面 布局文件 activity_main.xml
MainActivitypackage com.example.tastelibrary; import android.support.v7.app.ActionBarActivity; import android.support.v7.app.ActionBar; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentTransaction; import android.os.Bundle; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.LinearLayout; import android.os.Build; public class MainActivity extends ActionBarActivity implements OnClickListener{ private LinearLayout ll_recipe; private LinearLayout ll_kitchen; private LinearLayout ll_find; private LinearLayout ll_user; private ImageView p_w_picpath_home; private ImageView p_w_picpath_friends; private ImageView p_w_picpath_message; private ImageView p_w_picpath_more; //Fragment管理器 private FragmentManager fm = this.getSupportFragmentManager(); private FragmentTransaction ft; private RecipeFragment fragmentPage1; private FindFragment fragmentPage2; private KitchenFragment fragmentPage3; private UserFragment fragmentPage4; ActionBar myActionBar; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); myActionBar=getSupportActionBar(); initView(); //开始事务(每次改变Fragment管理器之后都要提交) ft = fm.beginTransaction(); home(); //提交事务 ft.commit(); } private void initView(){ ll_recipe = (LinearLayout)findViewById(R.id.ll_recipe); ll_kitchen = (LinearLayout)findViewById(R.id.ll_kitchen); ll_find = (LinearLayout)findViewById(R.id.ll_find); ll_user = (LinearLayout)findViewById(R.id.ll_user); p_w_picpath_home = (ImageView)findViewById(R.id.p_w_picpath_recipe); p_w_picpath_friends = (ImageView)findViewById(R.id.p_w_picpath_kitchen); p_w_picpath_message = (ImageView)findViewById(R.id.p_w_picpath_find); p_w_picpath_more = (ImageView)findViewById(R.id.p_w_picpath_user); ll_recipe.setOnClickListener(this); ll_kitchen.setOnClickListener(this); ll_find.setOnClickListener(this); ll_user.setOnClickListener(this); ll_recipe.setSelected(true); p_w_picpath_home.setSelected(true); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { int id = item.getItemId(); if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } @Override public void onClick(View v) { //每次点击时都需要重新开始事务 ft = fm.beginTransaction(); //把显示的Fragment隐藏 setSelected(); switch (v.getId()) { case R.id.ll_recipe: ll_recipe.setSelected(true); p_w_picpath_home.setSelected(true); home(); break; case R.id.ll_kitchen: ll_kitchen.setSelected(true); p_w_picpath_friends.setSelected(true); friend(); break; case R.id.ll_find: ll_find.setSelected(true); p_w_picpath_message.setSelected(true); message(); break; case R.id.ll_user: ll_user.setSelected(true); p_w_picpath_more.setSelected(true); more(); break; } ft.commit(); } /** * 设置每个按钮是否被选中 */ private void setSelected(){ ll_recipe.setSelected(false); ll_kitchen.setSelected(false); ll_find.setSelected(false); ll_user.setSelected(false); p_w_picpath_home.setSelected(false); p_w_picpath_friends.setSelected(false); p_w_picpath_message.setSelected(false); p_w_picpath_more.setSelected(false); if(fragmentPage1 != null){ //隐藏Fragment ft.hide(fragmentPage1); } if(fragmentPage2 != null){ ft.hide(fragmentPage2); } if(fragmentPage3 != null){ ft.hide(fragmentPage3); } if(fragmentPage4 != null){ ft.hide(fragmentPage4); } } private void home(){ if(fragmentPage1 == null){ fragmentPage1 = new RecipeFragment(); /*添加到Fragment管理器中 这里如果用replace, 当每次调用时都会把前一个Fragment给干掉, 这样就导致了每一次都要创建、销毁, 数据就很难保存,用add就不存在这样的问题了, 当Fragment存在时候就让它显示,不存在时就创建, 这样的话数据就不需要自己保存了, 因为第一次创建的时候就已经保存了, 只要不销毁一直都将存在*/ ft.add(R.id.fl_content, fragmentPage1); }else{ //显示Fragment ft.show(fragmentPage1); } } private void friend(){ if(fragmentPage2 == null){ fragmentPage2 = new FindFragment(); ft.add(R.id.fl_content, fragmentPage2); }else{ ft.show(fragmentPage2); } } private void message(){ if(fragmentPage3 == null){ fragmentPage3 = new KitchenFragment(); ft.add(R.id.fl_content, fragmentPage3); }else{ ft.show(fragmentPage3); } } private void more(){ if(fragmentPage4 == null){ fragmentPage4 = new UserFragment(); ft.add(R.id.fl_content, fragmentPage4); }else{ ft.show(fragmentPage4); } } }
以上是" android开发中如何实现底部导航"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
底部
导航
事务
篇文章
管理
开发
内容
布局
数据
时候
这样的话
不怎么
大部分
按钮
文件
更多
知识
第一次
行业
资讯
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
卡巴斯基管理服务器
宿豫区自动化网络技术供应商家
电脑网络安全模式怎么恢复网络
高级记事本软件开发版
上海海鲜配送软件开发
B1恢复数据库
日常网络安全事件
怎么看电脑服务器是什么
NCBI数据库中DNA序列字符
东南大学网络安全研究生毕业
比较好的网络安全平台
在数据库中存放音乐字段的类型
r2服务器管理器
企业存储服务器组成
威海诚信积分管理软件开发公司
怎么看数据库登录密码
手机游戏用什么服务器
dellemc服务器序列号在哪
怎么选择云服务器
深圳腾讯软件开发招聘
网络安全大学排名武书连
晋城公司app软件开发
谈谈网络安全网评文
IPv6光猫服务器配置
《网络安全法》适用案例
智慧工会软件开发平台
深圳社交软件开发联系人
数据服务节点服务器
服务器独立网关
大连数据库折扣