这天在写项目的时候,师傅说我的主页左上可以加一个侧滑菜单,因为之前写过,虽然是很久之前,所以还有遇到了一丢丢小问题。
首先是,原本的主界面是LinearLayout,在其之上再包含一层DrawerLayout,然后再加上侧面菜单的页面布局,记得侧滑菜单的布局中的layout_gravity为left/start,即为左侧菜单,若为right/end,则为右侧菜单。
左侧菜单页面布局:
layout_left_list.xml
<androidx.recyclerview.widget.RecyclerView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/rv_left_list"
android:layout_width="150dp"
android:layout_height="match_parent"
android:layout_gravity="start"
android:background="@color/white">
</androidx.recyclerview.widget.RecyclerView>
主界面页面布局:
main.xml
<androidx.drawerlayout.widget.DrawerLayout
…………
<--! 原本的主界面页面布局-->
<LinearLayout
…………>
………………
</LinearLayout>
<--! 左侧菜单页面布局 -->
<include layout="@layout/layout_left_list"/>
</androidx.drawerlayout.widget.DrawerLayout>
注意!
此处的侧滑菜单的页面布局一定要放在原本布局之后,不然就获取不到侧滑菜单布局的点击事件了。(之前因为这个懵了很久……)
`
然后因为侧滑页面用的是RecyclerView,所以记得写好其适配器和子项的页面布局,不然没法显示数据。因为今天主要讲的是DrawerLayout,所以这里就不深究了。
主界面Activity:
MainActivity.class:
public void class MainActivity extends AppCompatActivity{
@BindView(R.id.rv_left_list)
RecyclerView mRvLeftList;
@BindView(R.id.btn)
Button mBtn;
@BindView(R.id.drawer_layout)
DrawerLayout mDrawerLayout;
private MainLeftListAdapter mLeftAdapter;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ButterKnife.bind(this);
initView();
initData();
}
public void initView() {
//这是设置左侧滑菜单不能通过侧滑显示
mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
//以下是对侧滑栏中的RecyclerView的一些处理
mRvLeftList.setLayoutManager(new LinearLayoutManager(this));
mLeftAdapter = new MainLeftListAdapter(this);
mRvLeftList.setAdapter(mLeftAdapter);
}
public void initData() {
//XXXXXX是List<Model>类型
mLeftAdapter.setList(XXXXXX);
mLeftAdapter.notifyDataSetChanged();
//以下是设置在RecyclerView中的点击事件接口
mLeftAdapter.setLeftOnClick(position -> {
Model model = XXXXXX.get(position);
btn.setText(model.getText());
mDrawerLayout.closeDrawer(mRvLeftList);
});
}
//设置按钮btn的点击事件,点击后左侧滑菜单显示
@OnClick(R.id.btn)
public void change() {
if (! mDrawerLayout.isDrawerOpen(mRvLeftList)) {
mDrawerLayout.openDrawer(mRvLeftList);
}
}
}
以上就把Drawer Layout的实现侧滑菜单,以及其子项点击事件就完成啦!
本人只是刚入门的小萌新,有什么不对的地方,还请各位大神指点一二。