现在的位置: 首页 > 综合 > 正文

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

2014年08月11日 ⁄ 综合 ⁄ 共 2723字 ⁄ 字号 评论关闭

如果以前用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;
	
	@Override
	protected 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();
	}

	@Override
	public 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

抱歉!评论已关闭.