当前位置: 移动技术网 > 移动技术>移动开发>Android > Android DrawerLayout实现抽屉效果实例代码

Android DrawerLayout实现抽屉效果实例代码

2019年07月24日  | 移动技术网移动技术  | 我要评论

 官网:

贴上主要的逻辑和布局文件:

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实现抽屉效果实例代码,希望对大家有所帮助

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网