Android使用3个activity实现底部导航栏
时间: 2024-02-09 22:08:38 浏览: 254
要实现底部导航栏,可以使用 Android 中的 TabLayout 和 ViewPager。具体步骤如下:
1. 在布局文件中添加 TabLayout 和 ViewPager 组件。
2. 创建三个 Fragment,并在每个 Fragment 中添加相应的布局和逻辑。
3. 创建一个 PagerAdapter,用于将 Fragment 和 TabLayout 绑定。
4. 在 MainActivity 中设置 ViewPager 的适配器,并将 TabLayout 和 ViewPager 进行绑定。
5. 在 MainActivity 中添加底部导航栏的选项卡,并设置选项卡的图标和标签。
6. 在 MainActivity 中添加选项卡的点击事件,以便切换不同的 Fragment。
下面是一个简单的实现示例:
MainActivity.java:
```java
public class MainActivity extends AppCompatActivity {
private TabLayout mTabLayout;
private ViewPager mViewPager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mTabLayout = findViewById(R.id.tab_layout);
mViewPager = findViewById(R.id.view_pager);
// 创建三个 Fragment
Fragment1 fragment1 = new Fragment1();
Fragment2 fragment2 = new Fragment2();
Fragment3 fragment3 = new Fragment3();
// 创建 PagerAdapter
MyPagerAdapter adapter = new MyPagerAdapter(getSupportFragmentManager());
adapter.addFragment(fragment1, "Tab 1");
adapter.addFragment(fragment2, "Tab 2");
adapter.addFragment(fragment3, "Tab 3");
// 设置 ViewPager 的适配器
mViewPager.setAdapter(adapter);
// 将 TabLayout 和 ViewPager 进行绑定
mTabLayout.setupWithViewPager(mViewPager);
// 设置选项卡的图标和标签
mTabLayout.getTabAt(0).setIcon(R.drawable.ic_tab1).setText("Tab 1");
mTabLayout.getTabAt(1).setIcon(R.drawable.ic_tab2).setText("Tab 2");
mTabLayout.getTabAt(2).setIcon(R.drawable.ic_tab3).setText("Tab 3");
// 添加选项卡的点击事件,以便切换不同的 Fragment
mTabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
mViewPager.setCurrentItem(tab.getPosition());
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
});
}
// 自定义 PagerAdapter
private class MyPagerAdapter extends FragmentPagerAdapter {
private List<Fragment> mFragmentList = new ArrayList<>();
private List<String> mTitleList = new ArrayList<>();
public MyPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
return mFragmentList.get(position);
}
@Override
public int getCount() {
return mFragmentList.size();
}
public void addFragment(Fragment fragment, String title) {
mFragmentList.add(fragment);
mTitleList.add(title);
}
@Nullable
@Override
public CharSequence getPageTitle(int position) {
return mTitleList.get(position);
}
}
}
```
activity_main.xml:
```xml
<android.support.design.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" />
<android.support.design.widget.TabLayout
android:id="@+id/tab_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorPrimary"
app:tabGravity="fill"
app:tabIndicatorColor="@android:color/white"
app:tabIndicatorHeight="2dp"
app:tabSelectedTextColor="@android:color/white"
app:tabTextColor="@android:color/white" />
</android.support.design.widget.AppBarLayout>
<android.support.v4.view.ViewPager
android:id="@+id/view_pager"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
</android.support.design.widget.CoordinatorLayout>
```
注意:上述代码使用了 Android Support Library,如果你使用的是 AndroidX 的话,需要将相应的组件和包名进行更改。另外,还需要在 build.gradle 文件中添加相应的依赖。
阅读全文