Android原生控件:DrawerLayout 抽屉式侧滑菜单
布局:
内分两个子布局,第一个子布局是主界面没做滑动操作显示的,第二个子布局是放滑动出来的局面布局。
在第二个子布局内切记要加android:layout_gravity=" ",否则无效果的!!!
DrawerLayout+ToolBar报错:DrawerLayout must be measured with MeasureSpec.EXACTLY.
点这里https://blog.csdn.net/weisubao/article/details/60871641
当然侧滑菜单最大的宽度就是320dp
<android.support.v4.widget.DrawerLayout
android:id="@+id/drawerlayout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
</LinearLayout>
<LinearLayout
android:layout_width="320dp"
android:layout_height="match_parent"
android:layout_gravity="start"
android:background="#00bfff">
</LinearLayout>
</android.support.v4.widget.DrawerLayout>
实用代码:
//控件
DrawerLayout drawerLayout = findViewById(R.id.drawerlayout);
ImageView drawer_change = findViewById(R.id.drawer_change);
//实现drawerLayout监听方法
drawerLayout.addDrawerListener(new DrawerLayout.DrawerListener() {
//当抽屉被滑动的时候调用此方法 arg1 表示 滑动的幅度(0-1)
@Override
public void onDrawerSlide(@NonNull View view, float v) {
Toast.makeText(MainActivity.this, "onDrawerSlide", Toast.LENGTH_SHORT).show();
}
//当一个抽屉被完全打开的时候被调用
@Override
public void onDrawerOpened(@NonNull View view) {
Toast.makeText(MainActivity.this, "onDrawerOpened", Toast.LENGTH_SHORT).show();
}
//当一个抽屉完全关闭的时候调用此方法
@Override
public void onDrawerClosed(@NonNull View view) {
Toast.makeText(MainActivity.this, "onDrawerClosed", Toast.LENGTH_SHORT).show();
}
//状态改变的时候调用此方法
@Override
public void onDrawerStateChanged(int i) {
Toast.makeText(MainActivity.this, "onDrawerStateChanged", Toast.LENGTH_SHORT).show();
}
});
//点击控制显示隐藏
drawer_change.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//判断打开的时候,将其关闭,反之打开
if (drawerLayout.isDrawerOpen(Gravity.LEFT)) {
//关闭侧滑菜单
drawerLayout.closeDrawer(Gravity.LEFT);
} else {
//打开侧滑菜单
drawerLayout.openDrawer(Gravity.LEFT);
}
}
});