不能算真正意义上的侧边栏
首先root 布局使用android.support.v4.widget.DrawerLayout
布局文件:
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/main_layout"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<!-- main layout must be the first one layout -->
<!-- using background to devide -->
<RelativeLayout
android:id="@+id/content_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#000" />
<!-- drawer layout -->
<!-- layout_gravity="start": means to show it from left to main position -->
<!-- 240dp is lower than all phones width -->
<!-- using background to devide -->
<RelativeLayout
android:id="@+id/drawer_layout"
android:layout_gravity="start"
android:layout_width="240dp"
android:layout_height="match_parent"
android:background="#fff" />
</android.support.v4.widget.DrawerLayout>
java代码:
package com.drawerlayoutdemo;
import android.os.Bundle;
import android.app.Activity;
import android.support.v4.widget.DrawerLayout;
import android.support.v4.widget.DrawerLayout.DrawerListener;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.widget.RelativeLayout;
public class MainActivity extends Activity implements DrawerListener {
private DrawerLayout mainLayout;
private RelativeLayout contentLayout, drawerLayout;
private String tag = "MainActivity";
//用该变量标示抽屉是否被打开
private boolean drawIsOpened = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mainLayout = (DrawerLayout) findViewById(R.id.main_layout);
mainLayout.setDrawerListener(this);
//获取主布局
contentLayout = (RelativeLayout) findViewById(R.id.content_layout);
//获取左侧布局
drawerLayout = (RelativeLayout) findViewById(R.id.drawer_layout);
}
//如果要使用菜单键来(打开||关闭)抽屉,则重写onKeyDown方法
//根据drawIsOpened来决定是(打开||关闭)
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_MENU) {
if (drawIsOpened) {
mainLayout.closeDrawer(drawerLayout);
} else {
mainLayout.openDrawer(drawerLayout);
}
}
return super.onKeyDown(keyCode, event);
}
/* 覆写DrawerListener里的方法 */
@Override
public void onDrawerClosed(View arg0) {
Log.i(tag, "drawer close");
drawIsOpened = false;
}
@Override
public void onDrawerOpened(View arg0) {
// TODO Auto-generated method stub
Log.i(tag, "drawer open");
drawIsOpened = true;
}
@Override
public void onDrawerSlide(View arg0, float delta) {
Log.i(tag, "draw slide");
Log.i(tag, delta + "");
}
@Override
public void onDrawerStateChanged(int state) {
Log.i(tag, "draw state change to " + state);
}
/* 覆写DrawerListener里的方法 */
}