Android DrawerLayout实现抽屉效果实例代码
程序员文章站
2024-02-22 20:56:04
官网:
贴上主要的逻辑和布局文件:
activity_main.xml
官网:
贴上主要的逻辑和布局文件:
activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <android.support.v4.widget.drawerlayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent"> <!-- content --> <framelayout android:id="@+id/drawer_container" android:layout_width="match_parent" android:layout_height="match_parent"/> <!-- drawer--> <listview android:id="@+id/drawer_menu" android:layout_width="240dp" android:layout_height="match_parent" android:background="#fff0f0f0" android:layout_gravity="start"/> <!-- android:choicemode 选中状态 跟onitemclick没有冲突 none 值为0,表示无选择模式; singlechoice 值为1,表示最多可以有一项被选中; multiplechoice 值为2,表示可以多项被选中。 android:layout_gravity left或right left或start right或end 表示在抽屉里的效果是从左到右还是从右到左出现 --> </android.support.v4.widget.drawerlayout>
这里需要注意一下:content主界面一定要定义在drawer的前面,另外,android:layout_gravity="start"(从左往右)或者android:layout_gravity="end"(从右往左),这个属性是必须要定义的,不然出现下面的异常:
mainactivity.java
package com.jackie.drawerlayoutdemo; import android.os.bundle; import android.support.v4.widget.drawerlayout; import android.support.v7.app.appcompatactivity; import android.view.view; import android.widget.adapterview; import android.widget.arrayadapter; import android.widget.listview; import android.widget.textview; public class mainactivity extends appcompatactivity { private string mtitle; private drawerlayout mdrawerlayout; private listview mdrawermenu; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); initview(); initdata(); //默认打开抽屉 mdrawerlayout.opendrawer(mdrawermenu); } private void initview() { mtitle = getresources().getstring(r.string.app_name); mdrawerlayout = (drawerlayout) findviewbyid(r.id.drawer_layout); mdrawermenu = (listview) findviewbyid(r.id.drawer_menu); } private void initdata() { //数组定义在xml 文件中 string[] items = getresources().getstringarray(r.array.left_drawer_items); arrayadapter<string> adapter = new arrayadapter<>(this, android.r.layout.simple_expandable_list_item_1); adapter.addall(items); mdrawermenu.setadapter(adapter); mdrawermenu.setselection(0); //设置点击item事件 mdrawermenu.setonitemclicklistener(new adapterview.onitemclicklistener() { @override public void onitemclick(adapterview<?> parent, view view, int position, long id) { mtitle = ((textview) view).gettext().tostring(); switchfragment(); mdrawerlayout.closedrawer(mdrawermenu); mdrawermenu.setselection(position); } }); } private void switchfragment() { getsupportfragmentmanager().begintransaction().replace(r.id.drawer_container, new itemfragment(mtitle)).commit(); getsupportactionbar().settitle(mtitle); } }
效果图如下:
以上所述是小编给大家介绍的android drawerlayout实现抽屉效果实例代码,希望对大家有所帮助