使用DrawerLayout实现侧滑栏

版权声明:欢迎转载,评论 https://blog.csdn.net/qq_29645505/article/details/88766191

首先,要将Activity的根布局改为android.support.v4.widget.DrawerLayout
其次,要为侧滑栏的布局控件设置属性android:layout_gravity=“start”(左边)或android:layout_gravity=“end”(右边)。
布局文件如下:

< 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"
    android:background="@color/lightgray"
    android:orientation="vertical" >
    < !-- 主菜单 -- >
    < LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/white"
        android:orientation="vertical" >
    < /LinearLayout>
    < !--侧滑栏-- >
    < ListView
        android:id="@+id/lvLeftDrawer"
        android:layout_width="150dp"
        android:layout_height="wrap_content"
        android:paddingTop="10dp"
        android:layout_gravity="start"
        android:background="@color/white"
      android:gravity="left|center"
        android:choiceMode="singleChoice"
        android:divider="@android:color/transparent"
        android:dividerHeight="1dp" / >
< /android.support.v4.widget.DrawerLayout>

在Activity后台代码中需要对DrawerLayout进行初始化:

private void initDrawerLayout() {
drawerLayout = (DrawerLayout) super.findViewById(R.id.drawerLayout);
// drawerLayout.setScrimColor(Color.TRANSPARENT);// 侧滑时主界面的变化颜色
drawerLayout.setScrimColor(Color.parseColor("#880bb9f6"));
toggle = new ActionBarDrawerToggle(this,
drawerLayout,// 设置左右滑动打开关闭侧滑栏的动作
R.drawable.ic_launcher, R.string.drawer_open,
R.string.drawer_close) {
public void onDrawerClosed(View drawerView) {// 控制侧边栏的关闭
super.onDrawerClosed(drawerView);
}

public void onDrawerOpened(View drawerView) {// 控制侧边栏打开
super.onDrawerOpened(drawerView);
}
};
drawerLayout.setDrawerListener(toggle);
}

通过点击某个控件来控制侧滑栏的显示和隐藏:

@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.tvTitle:// 打开侧边栏
toggleLeftSliding();
break;
default:
break;
}
}
private void toggleLeftSliding() {// 该方法控制侧滑栏的显示和隐藏
if (drawerLayout.isDrawerOpen(Gravity.START)) {
drawerLayout.closeDrawer(Gravity.START);
} else {
drawerLayout.openDrawer(Gravity.START);
}
}

猜你喜欢

转载自blog.csdn.net/qq_29645505/article/details/88766191
今日推荐