Android中实现侧滑菜单
使用官方提供的 DrawerLayout。
布局
<?xml version="1.0" encoding="utf-8"?>
<androidx.drawerlayout.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/drawer"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#0f0"
tools:openDrawer="start">
<!--真实内容-->
<include
android:id="@+id/content"
layout="@layout/activity_main_content" />
<!--这部分是侧滑内容
layout_gravity:是控制侧滑方向的
start:表示从左侧滑出
end:表示从右侧
上面说的start并不一定是左侧
因为这个start其实是手机的布局方法
有些语言的手机是从右到左布局
那么如果还是start
那就是从右侧滑出-->
<LinearLayout
android:fitsSystemWindows="true"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="start"
android:background="?attr/colorSlideBackground"
android:orientation="vertical">
...
</LinearLayout>
</androidx.drawerlayout.widget.DrawerLayout><!--/真实内容-->
显示
//打开侧滑按钮点击
binding.content.leftButton.setOnClickListener(v -> {
binding.drawer.openDrawer(GravityCompat.START);
});
隐藏
private void closeDrawer() {
binding.drawer.closeDrawer(GravityCompat.START);
}
返回处理
/**
* 关闭界面时调用
*/
@Override
public void onBackPressed() {
if (binding.drawer.isDrawerOpen(GravityCompat.START)) {
//如果侧滑打开了,返回关闭侧滑,不关闭应用
closeDrawer();
return;
}
super.onBackPressed();
}