用fragment制作导航栏
时间: 2023-10-10 14:08:56 浏览: 77
1. 创建一个新的Android项目,并在项目中添加一个Navigation Drawer Activity。
2. 打开activity_main.xml文件,在其中添加以下代码:
```
<androidx.drawerlayout.widget.DrawerLayout
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- The main content view -->
<FrameLayout
android:id="@+id/main_content"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<!-- The navigation drawer -->
<ListView
android:id="@+id/nav_drawer"
android:layout_width="240dp"
android:layout_height="match_parent"
android:layout_gravity="start"
android:background="#FFFFFF" />
</androidx.drawerlayout.widget.DrawerLayout>
```
这里我们使用DrawerLayout作为主布局,其中包含一个FrameLayout和一个ListView。
3. 创建一个新的Fragment,用于显示导航栏中的选项。在项目中右键点击app文件夹,选择New -> Fragment -> Fragment (Blank)。输入一个名称,如NavFragment。
4. 打开NavFragment.java文件,在其中添加以下代码:
```
public class NavFragment extends Fragment {
private ListView mListView;
public NavFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_nav, container, false);
// Initialize the ListView
mListView = view.findViewById(R.id.nav_list);
// Create an ArrayAdapter to populate the ListView
ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(),
android.R.layout.simple_list_item_1, new String[]{"Option 1", "Option 2", "Option 3"});
// Set the adapter for the ListView
mListView.setAdapter(adapter);
return view;
}
}
```
这里我们创建了一个名为NavFragment的Fragment,其中包含一个ListView,用于显示导航栏中的选项。我们在onCreateView()方法中初始化ListView,并使用一个ArrayAdapter来填充它。
5. 打开fragment_nav.xml文件,在其中添加以下代码:
```
<ListView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/nav_list"
android:layout_width="match_parent"
android:layout_height="match_parent" />
```
这里我们只需要一个ListView,用于显示导航栏中的选项。
6. 回到activity_main.xml文件,找到DrawerLayout中的ListView,并将它的android:id属性修改为@+id/nav_drawer。然后,在MainActivity.java文件中添加以下代码:
```
public class MainActivity extends AppCompatActivity {
private DrawerLayout mDrawerLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Initialize the DrawerLayout
mDrawerLayout = findViewById(R.id.drawer_layout);
// Initialize the ActionBarDrawerToggle
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this, mDrawerLayout,
R.string.navigation_drawer_open, R.string.navigation_drawer_close);
mDrawerLayout.addDrawerListener(toggle);
toggle.syncState();
// Add the NavFragment to the navigation drawer
getSupportFragmentManager().beginTransaction()
.add(R.id.nav_drawer, new NavFragment())
.commit();
}
}
```
这里我们首先初始化DrawerLayout,并创建一个ActionBarDrawerToggle对象,用于处理导航栏的开/关事件。然后,我们通过getSupportFragmentManager()方法向NavFragment添加了一个实例。
7. 运行应用程序,你将看到一个带有导航栏的页面。单击导航栏中的选项,你将看到相应的内容显示在主内容区域中。
阅读全文