用DrawerLayout实现侧滑菜单以及其子项的点击事件

这天在写项目的时候,师傅说我的主页左上可以加一个侧滑菜单,因为之前写过,虽然是很久之前,所以还有遇到了一丢丢小问题。

首先是,原本的主界面是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的实现侧滑菜单,以及其子项点击事件就完成啦!

本人只是刚入门的小萌新,有什么不对的地方,还请各位大神指点一二。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值