1. 在布局文件中添加 DrawerLayout:
<!-- res/layout/activity_main.xml -->
<androidx.drawerlayout.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawerLayout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- 主内容布局 -->
<FrameLayout
android:id="@+id/mainContent"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- 主要内容放在这里 -->
</FrameLayout>
<!-- 侧滑菜单布局 -->
<LinearLayout
android:id="@+id/navDrawer"
android:layout_width="240dp"
android:layout_height="match_parent"
android:layout_gravity="start"
android:orientation="vertical"
android:background="#FFFFFF">
<!-- 侧滑菜单的内容放在这里 -->
</LinearLayout>
</androidx.drawerlayout.widget.DrawerLayout>
2. 在活动中处理 DrawerLayout:
import android.os.Bundle;
import androidx.appcompat.app.ActionBarDrawerToggle;
import androidx.appcompat.app.AppCompatActivity;
import androidx.drawerlayout.widget.DrawerLayout;
public class MainActivity extends AppCompatActivity {
private DrawerLayout drawerLayout;
private ActionBarDrawerToggle drawerToggle;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 获取 DrawerLayout
drawerLayout = findViewById(R.id.drawerLayout);
// 创建 ActionBarDrawerToggle,并与 DrawerLayout 关联
drawerToggle = new ActionBarDrawerToggle(
this,
drawerLayout,
R.string.drawer_open,
R.string.drawer_close);
// 设置 DrawerToggle 为 DrawerLayout 的侦听器
drawerLayout.addDrawerListener(drawerToggle);
// 启用 ActionBar 的 Home 按钮(通常是应用程序图标)
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeButtonEnabled(true);
}
// 处理 ActionBar 上的 Home 按钮点击事件
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (drawerToggle.onOptionsItemSelected(item)) {
return true;
}
return super.onOptionsItemSelected(item);
}
// 处理 DrawerLayout 的状态变化事件
@Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
// 同步 DrawerToggle 的状态
drawerToggle.syncState();
}
// 处理屏幕旋转等导致的 DrawerLayout 状态变化
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
drawerToggle.onConfigurationChanged(newConfig);
}
}
上述代码创建了一个包含 DrawerLayout 的主活动,并在左侧添加了一个宽度为 240dp 的侧滑菜单。通过使用 ActionBarDrawerToggle,我们能够方便地实现与 DrawerLayout 的交互。在 onOptionsItemSelected 方法中,我们将 ActionBar 上的 Home 按钮的点击事件交给 ActionBarDrawerToggle 处理。在 onPostCreate 和 onConfigurationChanged 方法中,我们分别在活动创建后和配置变化时同步 ActionBarDrawerToggle 的状态。
转载请注明出处:http://www.zyzy.cn/article/detail/15160/Android