导航(1) 侧滑菜单导航 可替代AndroidSideMenu

来源:互联网 发布:最新手游服务端源码 编辑:程序博客网 时间:2024/05/18 17:43


如果以前用AndroidSideMenu来实现抽屉式的侧滑菜单的话,现在可以使用官方的这个DrawerLayout布局来代替了。

这个DrawerLayout目前包含在v4版的扩展库中,使用很方便。


效果如下 :

初始时菜单是隐藏的

手指从左向右滑动时,菜单就会跟着滑出,或点击例子中的按纽也会显示出来。


1. 布局文件

activity_drawerlayout.xml

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent" >        <android.support.v4.widget.DrawerLayout        android:id="@+id/drawer_layout"        android:layout_width="match_parent"        android:layout_height="match_parent" >        <!-- 页面显示内容  -->        <FrameLayout            android:id="@+id/content_frame"            android:layout_width="match_parent"            android:layout_height="match_parent" ><!-- 单击按键显示菜单 -->            <Button                android:id="@+id/btn"                android:layout_width="match_parent"                android:layout_height="wrap_content"                android:text="显示菜单"                 />        </FrameLayout>        <!-- 左侧导航菜单内容  -->        <ListView            android:id="@+id/left_drawer"            android:layout_width="match_parent"            android:layout_height="match_parent"            android:layout_gravity="start"            android:background="#9400D3"            android:choiceMode="singleChoice"            android:divider="@android:color/transparent"            android:dividerHeight="0dp" />            </android.support.v4.widget.DrawerLayout>        </RelativeLayout>
  布局中是有规则的,这个要注意。

在标签DrawerLayout中,首先要包含一个FrameLayout布局且是第一个布局元素,用于显示默认要显示的布局。 在FrameLayout布局的下方,则是显示在菜单中的控件或布局。 本例中放了一个ListView控件。同时,在例子上放的ListView标签中可以看到有一个  android:layout_gravity="start"  属性设置,这个是要特别注意的。如果没有

它。则运行时,菜单会显示在最上层,覆盖掉你默认要显示的东西。

2.实现代码:

public class DrawerLayoutActivity extends  Activity {private DrawerLayout mDrawerLayout = null;private ListView  mDrawerList = null;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);//标题栏浮在窗口上        //getWindow().requestFeature(Window.FEATURE_ACTION_BAR_OVERLAY);setContentView(R.layout.activity_drawerlayout);this.setTitle("侧滑菜单导航演示");mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);        Button button = (Button) findViewById(R.id.btn);        button.setOnClickListener(new OnClickListener()        {            @Override            public void onClick(View v)            {                // 按钮按下,将抽屉打开                mDrawerLayout.openDrawer(Gravity.LEFT);            }        });        initListView();}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}private void initListView(){ mDrawerList = (ListView) findViewById(R.id.left_drawer); mDrawerList.setAdapter(new ArrayAdapter<String>(this,  android.R.layout.simple_expandable_list_item_1, getData()));            // Set the list's click listener    mDrawerList.setOnItemClickListener(new OnItemClickListener()    {        @Override        public void onItemClick(AdapterView<?> parent, View view,                int position, long id)        {        //响应事件        }    });}private List<String> getData(){        List<String> data = new ArrayList<String>();    data.add("菜单1");    data.add("菜单2");    data.add("菜单3");    data.add("菜单4");         return data;}}

MAIL:xcl_168@aliyun.com
我的CSDN BLOG: http://blog.csdn.net/xcl168

原创粉丝点击