Android DrawerLayout简单使用
DrawerLayout是Support Library包中实现了侧滑菜单效果的控件,可以说DrawerLayout是因为第三方控件如MenuDrawer等的出现之后,Google借鉴而出现的产物。DrawerLayout分为侧边菜单和主内容区两部分,侧边菜单可以根据手势展开与隐藏(DrawerLayout自身特性),主内容区的内容可以随着菜单的点击而变化(需要使用者自己实现)。
DrawerLayout使用
DrawerLayout使用比较简单,在布局文件中使用DrawerLayout进行设置:
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/dlyt_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<!-- 内容 -->
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<TextView
android:id="@+id/tv_content"
android:text="content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
</FrameLayout>
<!-- 左边菜单 -->
<FrameLayout
android:background="@color/colorAccent"
android:layout_gravity="start"
android:layout_width="200dp"
android:layout_height="match_parent"
>
<TextView
android:id="@+id/tv_left_menu"
android:text="left menu"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
</FrameLayout>
<!-- 右边菜单 -->
<FrameLayout
android:background="@color/colorAccent"
android:layout_gravity="end"
android:layout_width="200dp"
android:layout_height="match_parent"
>
<TextView
android:id="@+id/tv_right_menu"
android:text="right menu"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
</FrameLayout>
</android.support.v4.widget.DrawerLayout>
在DrawerLayout布局中有三个元素:
- View主体
- 左边菜单:使用android:layout_gravity="start" 设置
- 右边菜单:使用android:layout_gravity="end" 设置
DrawerLayout中部分API介绍
(1)isDrawerOpen(@EdgeGravity int drawerGravity)
:判断菜单是否打开
传入参数:
GravityCompat.START: 左边菜单是否打开
GravityCompat.END: 右边菜单是否打开
(2)openDrawer(@EdgeGravity int gravity)
:打开菜单
传入参数:
GravityCompat.START: 打开左边菜单
GravityCompat.END: 打开右边菜单
(3)closeDrawer(@EdgeGravity int gravity)
:关闭菜单
传入参数:
GravityCompat.START: 关闭左边菜单。
GravityCompat.END: 关闭右边菜单。
(4)addDrawerListener(@NonNull DrawerListener listener)
: 添加监听
//添加监听
DrawerLayout.addDrawerListener(new DrawerViewListener());
private class DrawerViewListener implements DrawerLayout.DrawerListener {
@Override
public void onDrawerSlide(View drawerView, float slideOffset) {
//滑动时调用
}
@Override
public void onDrawerOpened(View drawerView) {
//打开菜单时调用
}
@Override
public void onDrawerClosed(View drawerView) {
//关闭菜单时调用
}
@Override
public void onDrawerStateChanged(int newState) {
//菜单状态改变时调用
}
}
版权声明:
作者:Joe.Ye
链接:https://www.appblog.cn/index.php/2023/02/25/android-drawerlayout-easy-to-use/
来源:APP全栈技术分享
文章版权归作者所有,未经允许请勿转载。
共有 0 条评论