android开发中如何实现底部导航
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,小编给大家分享一下 android开发中如何实现底部导航,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!使用LinearLa
千家信息网最后更新 2026年11月01日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安全错误
数据库的锁怎样保障安全
上海喔噻互联网科技有限公司
科技互联网产品
互联网核心科技是什么
喔噻互联网科技
菲比寻常互联网科技
互联网科技公司介绍
互联网巨头投资的硬核科技
深圳互联网科技怎么样
深圳前海聚择互联网科技有限公司
互联网科技创新服务
互联网科技与大数据专业
互联网科技和信息
威龙国际互联网科技公司
工业互联网等科技实现智能化赋能
徐州市互联网科技有限公司
沐思想互联网科技有限公司
广州有谷有贝互联网科技有限公司
福建互联网展示科技馆设计
恒生互联网科技趋势
广州全民伙伴互联网科技有限公司
小米移动互联网科技园
高科技互联网
北京互联网科技有限公司
为想互联网科技
万易互联网科技有限公司
央行互联网金融科技公司
全球顶尖互联网科技公司
恒生互联网科技业指数调整周期
互联网科技对化妆品行业
互联网科技自媒体灵感