android开发中如何实现底部导航
发表于:2025-01-18 作者:千家信息网编辑
千家信息网最后更新 2025年01月18日,小编给大家分享一下 android开发中如何实现底部导航,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!使用LinearLa
千家信息网最后更新 2025年01月18日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安全错误
数据库的锁怎样保障安全
明日之后个服务器
监测记录网络安全事件的技术措施
ajax请求三次数据库
公共数据库免费申请
威科数据库下载
软件网络服务器刑侦好查吗
蒲公英能做打印机服务器
取消服务器增强安全设置
服务器怎么散热
解密数据库网络爬虫违法
从事危害网络安全的处罚
数据库只导入一个表数据类型
软件开发人员的调查研究
映翰通网络技术股票
台式电脑不需要服务器吗
崇明区个人数据库报价行情
web 数据库分离
多彩贵州文产集团网络安全倡议书
ukey链接服务器失败什么意思
路政网络安全专题会议
怎么添加安全数据库
ragic数据库系统怎么用
管理网络技术pdf下载
国内外网络安全现状分析
刺刀 网络安全
云服务器两地同时登录
网络安全检查台账
数据库表设计思想
数据库信息化教学设计
河南软件开发的几大因素