千家信息网

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开发中如何实现底部导航"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

0