美文网首页
安卓侧滑菜单DrawerLayout

安卓侧滑菜单DrawerLayout

作者: 风的影子XL | 来源:发表于2019-02-24 00:57 被阅读0次

    原文地址:https://blog.csdn.net/jinmie0193/article/details/80728152

    布局文件

    <?xml version="1.0" encoding="utf-8"?>

    <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"

        android:layout_width="match_parent"

        android:layout_height="match_parent"

        android:id="@+id/drawerlayout_drawer">

        <!--DrawerLayout最好为界面的根布局-->

        <!--主内容区的布局代码要放在侧滑菜单布局的前面,-->

        <RelativeLayout

            android:id="@+id/drawerlayout_main_layout"

            android:layout_width="match_parent"

            android:layout_height="match_parent">

            <TextView

                android:id="@+id/drawerlayout_mian_layout_text"

                android:layout_width="match_parent"

                android:layout_height="match_parent"

                android:gravity="center"

                android:text="这是主内容"

                android:textColor="@color/colorAccent"

                android:textSize="22sp" />

        </RelativeLayout>

        <!--必须设置layout_gravity属性,表示侧滑方向-->

        <TextView

            android:id="@+id/drawerlayout_side_tv"

            android:layout_width="200dp"

            android:layout_height="match_parent"

            android:layout_gravity="left"

            android:background="@color/white"

            android:text="侧滑菜单"/>

    </android.support.v4.widget.DrawerLayout>

    其中:

    DrawerLayout最好为界面的根布局,否则可能会出现触摸事件被屏蔽的问题;

    主内容区的布局代码要放在侧滑菜单布局的前面, 因为 XML 顺序意味着按 z 序(层叠顺序)排序,并且抽屉式导航栏必须位于

    内容顶部;

    侧滑菜单部分的布局必须设置layout_gravity属性,表示侧滑菜单是在左边还是右边,而且如果不设置在打开关闭抽屉的时候会

    报错,设置了layout_gravity="start/left"的视图才会被认为是侧滑菜单。

    效果

    3.官方推荐的是在做法是在toolbar左边添加一个导航按钮

    更改界面为无actionbar:android:theme="@style/Theme.AppCompat.Light.NoActionBar"

    xml布局文件的Relativelayout中内容替换为:

    [cpp] view plaincopy

    <code class="language-cpp"> <!--主内容区的布局代码要放在侧滑菜单布局的前面,--> 

        <RelativeLayout 

            android:id="@+id/drawerlayout_main_layout" 

            android:layout_width="match_parent" 

            android:layout_height="match_parent"> 

     

            <android.support.v7.widget.Toolbar 

                android:id="@+id/drawer_layout_rl_toolbar" 

                android:layout_width="match_parent" 

                android:layout_height="?android:attr/actionBarSize" 

                android:background="@color/yellow" 

                app:title="主标题"> 

     

            </android.support.v7.widget.Toolbar> 

     

        </RelativeLayout></code> 

    4.主界面实例化toolbar

    Toolbar toolbar = (Toolbar) findViewById(R.id.drawer_layout_rl_toolbar);

    传入toolbar,并传给actionbar

    setSupportActionBar(toolbar);                  //传入ToolBar实例

    ActionBar actionBar = getSupportActionBar();    //得到ActionBar实例

    然后设置显示导航按钮

    if (actionBar != null){

                //显示导航按钮

                actionBar.setDisplayHomeAsUpEnabled(true);

                //设置导航按钮图片

                actionBar.setHomeAsUpIndicator(R.drawable.design_menu);

            }

    实例化drawerlayout

    final DrawerLayout drawerLayout = (DrawerLayout) findViewById(R.id.drawerlayout_drawer);

    5.设置导航按钮的监听事件,点击显示侧滑菜单

    //设置toolbar的导航按钮监听事件

            toolbar.setNavigationOnClickListener(new View.OnClickListener() {

                @Override

                public void onClick(View view) {

                    //显示侧滑菜单

                    drawerLayout.openDrawer(GravityCompat.START);

                }

            });

    或者

    @Override

        public boolean onOptionsItemSelected(MenuItem item) {

            switch (item.getItemId()){

                case android.R.id.home:

                    //显示侧滑菜单

                    drawerLayout.openDrawer(GravityCompat.START);

                    break;

            }

            return super.onOptionsItemSelected(item);

        }

    相关文章

      网友评论

          本文标题:安卓侧滑菜单DrawerLayout

          本文链接:https://www.haomeiwen.com/subject/bytvyqtx.html