学习笔记
1. 添加依赖项
在你的 build.gradle
文件中添加必要的依赖项:
dependencies {
implementation 'androidx.viewpager2:viewpager2:1.0.0'
implementation 'com.google.android.material:material:1.4.0'
}
2. 布局文件
在你的布局文件中,添加 ViewPager2
和 BottomNavigationView
:
<LinearLayout android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
xmlns:android="http://schemas.android.com/apk/res/android">
<androidx.viewpager2.widget.ViewPager2
android:id="@+id/viewpager2_main"
android:layout_weight="1"
android:layout_width="match_parent"
android:layout_height="0dp"
/>
<com.google.android.material.bottomnavigation.BottomNavigationView
android:id="@+id/bottomnavigation_main"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:menu="@menu/your_menu_file_name"
/>
</LinearLayout>
3. 创建菜单资源
在 res/menu
目录下创建 bottom_navigation_menu.xml
:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/navigation_home"
android:icon="@drawable/ic_launcher_background"
android:title="主页" />
<item
android:id="@+id/navigation_dashboard"
android:icon="@drawable/ic_launcher_background"
android:title="今天" />
<item
android:id="@+id/navigation_notifications"
android:icon="@drawable/ic_launcher_background"
android:title="我的" />
</menu>
4. 创建 ViewPager 适配器
创建一个适配器类来管理页面:
public class ViewPagerMainAdapter extends FragmentStateAdapter {
public ViewPagerMainAdapter(@NonNull FragmentActivity fragmentActivity) {
super(fragmentActivity);
}
@NonNull
@Override
public Fragment createFragment(int position) {
switch (position){
case 0:
return new HomeFragment();
case 1:
return new TodayFragment();
case 2:
return new UserFragment();
default:
return new TodayFragment();
}
}
@Override
public int getItemCount() {
return 3;// 页面数量
}
}
5. 在 Activity 中设置 ViewPager 和 BottomNavigationView
在你的 Activity
中初始化 ViewPager
和 BottomNavigationView
:
public class MainActivity extends AppCompatActivity {
private ViewPager2 viewPager;
private BottomNavigationView bottomNavigationView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
viewPager = findViewById(R.id.viewpager2_main);
bottomNavigationView = findViewById(R.id.bottomnavigation_main);
ViewPagerMainAdapter adapter = new ViewPagerMainAdapter(this);
viewPager.setAdapter(adapter);
bottomNavigationView.setOnNavigationItemSelectedListener(item -> {
switch (item.getItemId()) {
case R.id.navigation_home:
viewPager.setCurrentItem(0);
return true;
case R.id.navigation_dashboard:
viewPager.setCurrentItem(1);
return true;
case R.id.navigation_notifications:
viewPager.setCurrentItem(2);
return true;
default:
return false;
}
});
viewPager.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() {
@Override
public void onPageSelected(int position) {
super.onPageSelected(position);
switch (position) {
case 0:
bottomNavigationView.setSelectedItemId(R.id.navigation_home);
break;
case 1:
bottomNavigationView.setSelectedItemId(R.id.navigation_dashboard);
break;
case 2:
bottomNavigationView.setSelectedItemId(R.id.navigation_notifications);
break;
}
}
});
}
}
6. 创建 Fragment
创建 HomeFragment
、TodayFragment
和 UserFragment
,确保它们是 Fragment
的子类。