- 首先需要创建 Bottom Navigation模版,创建完成后自动生成3个菜单,如图下
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/5cfcfd1dc2ae04480dfc122e51678aa3.png)
- 可以在app->res->menu->navigation.xml文件下添加或删除菜单,若添加超过5个好像会出现问题,每一个item对应一个菜单
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/28c6e5cb55eaefffb6de3e1ef3ca6e16.png)
- 更改菜单的下标文字需要在res->values->string.xml文件下更改或添加title,然后再对navigation.xml的title引用进行更改即可
- 在MainActivity中会自动生成图下代码
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/39d994f8b619391eb7dd2f1e4af1b7ca.png)
- 接下来是完成Fragment,有多少个界面就创建多少个xml布局文件和java class,TabFragmentPagerAdapter编写控制器,如图下
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/2073ace7f19b7bf27ff8a6ffe681a480.png)
- 这是每个界面的class文件和xml布局文件,其他4个都一样,就不都贴出来了
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/aefa1683ecf742bb1f42c9b418d30a6d.png)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/7d17c7fa98bdc6101a704ee3468ea0cc.png)
package com.example.administrator.mjproject;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
public class Scane01 extends Fragment{
@Override
public View onCreateView(LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.scane01, null);
return view;
}
}
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:text="菜单一"
android:textSize="30sp" />
</android.support.constraint.ConstraintLayout>
- 添加控制器代码 TabFragmentPagerAdapter
package com.example.administrator.mjproject;
import java.util.List;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
public class TabFragmentPagerAdapter extends FragmentPagerAdapter{
private FragmentManager mfragmentManager;
private List<Fragment> mlist;
public TabFragmentPagerAdapter(FragmentManager fm, List<Fragment> list) {
super(fm);
this.mlist = list;
}
@Override
public Fragment getItem(int arg0) {
return mlist.get(arg0);//显示第几个页面
}
@Override
public int getCount() {
return mlist.size();//有几个页面
}
}
- 最后在MainActivity中加入如下代码
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/24a79900167d361d1ee3ecb0e9400ff6.png)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/284ff477c191927d9cca38ae24b52010.png)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/e82c3a33cac7b2088492d5d9f6c47ef8.png)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/f5424e58ff506e1895dd723b008f9d05.png)
private ViewPager myViewPager;
private List<Fragment> list;
private TabFragmentPagerAdapter adapter;
private BottomNavigationView.OnNavigationItemSelectedListener mOnNavigationItemSelectedListener
= new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()) {
case R.id.package01:
myViewPager.setCurrentItem(0);
return true;
case R.id.package02:
myViewPager.setCurrentItem(1);
return true;
case R.id.package03:
myViewPager.setCurrentItem(2);
return true;
case R.id.package04:
myViewPager.setCurrentItem(3);
return true;
}
return false;
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
BottomNavigationView navigation = (BottomNavigationView) findViewById(R.id.navigation);
navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener);
myViewPager = (ViewPager) findViewById(R.id.myViewPager);
InitView();
}
private void InitView() {
//把Fragment添加到List集合里面
list = new ArrayList<>();
list.add(new Scane01());
list.add(new Scane02());
list.add(new Scane03());
list.add(new Scane04());
adapter = new TabFragmentPagerAdapter(getSupportFragmentManager(), list);
myViewPager.setAdapter(adapter);
myViewPager.setCurrentItem(3); //初始化显示第一个页面
}