Androidstudio fragment实现底部导航栏,四个图标实现界面切换,生成代码
时间: 2024-05-03 20:16:46 浏览: 18
好的,下面是一个简单的示例代码,实现了底部导航栏和四个Fragment之间的切换:
1. 首先,在XML布局文件中添加BottomNavigationView控件,用于显示底部导航栏:
```
<android.support.design.widget.BottomNavigationView
android:id="@+id/navigation"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:menu="@menu/navigation" />
```
2. 在res/menu目录下创建一个名为navigation.xml的菜单文件,添加四个菜单项,每个菜单项对应一个Fragment:
```
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/navigation_home"
android:icon="@drawable/ic_home_black_24dp"
android:title="@string/title_home" />
<item
android:id="@+id/navigation_dashboard"
android:icon="@drawable/ic_dashboard_black_24dp"
android:title="@string/title_dashboard" />
<item
android:id="@+id/navigation_notifications"
android:icon="@drawable/ic_notifications_black_24dp"
android:title="@string/title_notifications" />
<item
android:id="@+id/navigation_profile"
android:icon="@drawable/ic_person_black_24dp"
android:title="@string/title_profile" />
</menu>
```
3. 创建四个Fragment,分别对应四个菜单项。这里以HomeFragment为例:
```
public class HomeFragment extends Fragment {
public HomeFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_home, container, false);
}
}
```
4. 在MainActivity中,实现BottomNavigationView.OnNavigationItemSelectedListener接口,并在onCreate方法中设置底部导航栏的菜单项点击事件:
```
public class MainActivity extends AppCompatActivity
implements BottomNavigationView.OnNavigationItemSelectedListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
BottomNavigationView navigation = findViewById(R.id.navigation);
navigation.setOnNavigationItemSelectedListener(this);
// 默认显示HomeFragment
loadFragment(new HomeFragment());
}
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
Fragment fragment = null;
switch (item.getItemId()) {
case R.id.navigation_home:
fragment = new HomeFragment();
break;
case R.id.navigation_dashboard:
fragment = new DashboardFragment();
break;
case R.id.navigation_notifications:
fragment = new NotificationsFragment();
break;
case R.id.navigation_profile:
fragment = new ProfileFragment();
break;
}
return loadFragment(fragment);
}
// 加载Fragment方法
private boolean loadFragment(Fragment fragment) {
if (fragment != null) {
getSupportFragmentManager().beginTransaction()
.replace(R.id.fragment_container, fragment)
.commit();
return true;
}
return false;
}
}
```
这样,底部导航栏和四个Fragment之间的切换就实现了。注意,需要在布局文件中添加一个FrameLayout作为Fragment的容器。
希望这个示例代码能够帮到你!