侧滑菜单DrawerLayout的使用

来源:互联网 发布:电脑挂机赚钱软件 编辑:程序博客网 时间:2024/05/15 08:01

DrawerLayout是Android的support.v4包中提供的控件,在没有该控件之前,大家广泛使用开源库SlidingMenu来实现侧滑菜单的功能。
使用该控件比较简单,首先我们定义一个DrawerLayout的根布局

<?xml version="1.0" encoding="utf-8"?><android.support.v4.widget.DrawerLayout    xmlns:android="http://schemas.android.com/apk/res/android"    android:id="@+id/drawerLayout"    android:layout_width="match_parent"    android:layout_height="match_parent">    <!-- 第一个View表示主布局 -->    <RelativeLayout        android:id="@+id/rl"        android:layout_width="match_parent"        android:layout_height="match_parent">        <TextView            android:id="@+id/tv"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:textSize="30sp"            android:text="这是主布局"/>    </RelativeLayout>    <!-- 第二个View表示侧滑菜单的布局 -->    <LinearLayout        android:id="@+id/ll_drawerLeft"        android:layout_width="300dp"        android:layout_height="match_parent"        android:layout_gravity="start"        android:background="#ffffcc"        android:orientation="vertical">        <ImageView            android:id="@+id/iv_drawerLeft"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:background="@mipmap/ic_launcher"/>        <Button            android:id="@+id/btn_drawerLeft"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:text="这是一个按钮"/>    </LinearLayout></android.support.v4.widget.DrawerLayout>

关于布局需要注意以下几点:

1. 主内容视图一定要是DrawerLayout布局的第一个View。第二个View便是侧滑菜单,可以选择性的添加第三个视图,使左右各一个侧滑菜单
2.必须显示指定抽屉布局(本文使用的是LinearLayout)的android:layout_gravity属性

  • android:layout_gravity=”start”时,从右向左侧滑出

  • android:layout_gravity=”end”时,从左向右侧滑出

  • “start” 和 “end” 可以用 “left” 和 “right” 来代替,但是不建议替换


布局完成后,我们就可以再Activity中操作了

public class MainActivity extends Activity implements View.OnClickListener {    private DrawerLayout mDrawerLayout;  //根布局    private LinearLayout ll_drawer;  //侧滑栏布局    private TextView tv;    private Button btn_drawer;    private ImageView iv_drawer;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        tv = (TextView) findViewById(R.id.tv);        mDrawerLayout = (DrawerLayout) findViewById(R.id.drawerLayout);        ll_drawer = (LinearLayout) findViewById(R.id.ll_drawerLeft);        btn_drawer = (Button) findViewById(R.id.btn_drawerLeft);        iv_drawer = (ImageView) findViewById(R.id.iv_drawerLeft);        btn_drawer.setOnClickListener(this);  //可以直接对侧滑栏控件进行操作        iv_drawer.setOnClickListener(this);    }    @Override    public void onClick(View v) {        switch (v.getId()){            case R.id.btn_drawerLeft:                tv.setText("点击了按钮");                mDrawerLayout.closeDrawer(ll_drawer);  //把侧滑栏ll_drawer关闭                break;            case R.id.iv_drawerLeft:                tv.setText("点击了头像图片");                mDrawerLayout.closeDrawer(ll_drawer);                break;        }    }}

这里写图片描述

0 0