乐趣区

关于android:Android入门教程-DrawerLayout-侧滑栏

DrawerLayout 是实现了侧滑菜单成果的控件。

DawerLayout 分为侧边菜单和主内容区两局部

  • 主内容区要放在侧边菜单后面,还有就是主内容区最好以 DrawerLayout 最好为界面的根布局,否则可能会呈现触摸事件被屏蔽的问题。
  • 侧滑菜单局部的布局必须设置 layout_gravity 属性,示意侧滑菜单是在右边还是左边,设置了 layout_gravity=”start/left” 的视图才会被认为是侧滑菜单。

应用的注意事项

  • 主内容视图肯定要是 DrawerLayout 的第一个子视图
  • 主内容视图宽度和高度须要 match_parent
  • 必须显示指定侧滑视图的 android:layout_gravity 属性 android:layout_gravity = “start” 时,从左向右滑出菜单 android:layout_gravity = “end” 时,从右向左滑出菜单 不举荐应用 left 和 right!!!
  • 侧滑视图的宽度以 dp 为单位,不倡议超过 320dp(为了总能看到一些主内容视图)
    设置侧滑事件:mDrawerLayout.setDrawerListener(DrawerLayout.DrawerListene

DrawerLayout 示例:

要应用 DrawerLayout,能够在 layout xml 文件中将 DrawerLayout 设置为根视图。

从右边滑出的抽屉视图(侧滑栏)

一个简略的从右边滑出侧滑栏的例子。

侧滑栏滑出后,前面的视图会有个暗影。

layout 文件

<?xml version="1.0" encoding="utf-8"?>
<androidx.drawerlayout.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:openDrawer="start">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:text="我是主页" />

    </RelativeLayout>

    <RelativeLayout
        android:layout_width="250dp"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:background="#ffffff">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:text="我是侧滑栏" />
    </RelativeLayout>

</androidx.drawerlayout.widget.DrawerLayout>

成果:

须要留神的是,DrawerLayout 要设置tools:openDrawer="start";而且侧滑栏 layout 要设置android:layout_gravity="start"

如果改成tools:openDrawer="end",侧滑栏 layout 要设置android:layout_gravity="end"。侧滑栏能够从左边滑出。

当初侧边栏放的是 RelativeLayout。也能够放一个 RecyclerView。

抽屉进去时推动页面

监听侧滑栏的滑动事件,应用 ActionBarDrawerToggle。侧滑栏滑出时,在onDrawerSlide 办法中计算出滑动的间隔。而后主视图设置程度绝对偏移间隔 setTranslationX 即可。

可在 activity 的 onCreate 办法执行配置操作

DrawerLayout root = findViewById(R.id.root);
    final View contentView = findViewById(R.id.content_field);

    ActionBarDrawerToggle actionBarDrawerToggle = new ActionBarDrawerToggle(this, root, android.R.string.yes, android.R.string.cancel) {

        @Override
        public void onDrawerSlide(View drawerView, float slideOffset) {super.onDrawerSlide(drawerView, slideOffset);
            float slideX = drawerView.getWidth() * slideOffset;
            contentView.setTranslationX(slideX);
        }
    };
    root.addDrawerListener(actionBarDrawerToggle);

扭转滑出时的暗影

应用 DrawerLayout 的 setScrimColor 办法,扭转暗影色彩。默认的暗影色彩是 DEFAULT_SCRIM_COLOR = 0x99000000

DrawerLayout root = findViewById(R.id.root);
root.setScrimColor(Color.TRANSPARENT);

锁定 DrawerLayout
root.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED); // 解锁
root.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED); // 不检测从左到右的滑动动作

Android 零根底入门教程视频参考

退出移动版