小编给大家分享一下 android开发中如何实现底部导航,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
底部四个主导航页面 布局文件 activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/container" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.example.tastelibrary.MainActivity" tools:ignore="MergeRootFrame" > <FrameLayout android:id="@+id/fl_content" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" > </FrameLayout> <LinearLayout android:id="@+id/ll" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <LinearLayout android:id="@+id/ll_recipe" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:orientation="vertical" > <ImageView android:id="@+id/p_w_picpath_recipe" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/recipe_btn_selector" /> </LinearLayout> <LinearLayout android:id="@+id/ll_kitchen" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:orientation="vertical" > <ImageView android:id="@+id/p_w_picpath_kitchen" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/kitchen_btn_selector" /> </LinearLayout> <LinearLayout android:id="@+id/ll_find" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:orientation="vertical" > <ImageView android:id="@+id/p_w_picpath_find" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/find_btn_selector" /> </LinearLayout> <LinearLayout android:id="@+id/ll_user" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:orientation="vertical" > <ImageView android:id="@+id/p_w_picpath_user" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/user_btn_selector" /> </LinearLayout> </LinearLayout> </LinearLayout> MainActivity package 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开发中如何实现底部导航”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。