开发中,由于项目需求,需要每一个fragment都有侧拉栏,第一时间想到的就是用drawerlayout,这是谷歌推荐的侧拉栏,用法非常简单,只要把drawerlayout作为布局的最外层,然后里面用两个大布局包着,一个是主布局,一个是侧拉菜单布局,然后再侧拉布局的父布局给个属性 :layout_gravity="left",这样用手势侧拉就能拉出来侧拉栏了,可以和toobar绑定,通过toggle
//获取开关同时让开关和DrawerLayout关联在一起 toggle = new ActionBarDrawerToggle(this, mDrawerLayout, 0, 0); getSupportActionBar().setDisplayHomeAsUpEnabled(true); //设置默认的标题不显示 getSupportActionBar().setDisplayShowTitleEnabled(false); //设置点击事件,点击弹出menu界面 mDrawerLayout.setDrawerListener(toggle);不过正常四个fragment的话,底部导航按钮是不会被遮挡住的,这样拉出菜单底下按钮还可以点击切换,需求不允许,所以就考虑从简,用popuwindows代替侧拉栏
先看效果图:
其实大体逻辑上并不难,只是自定义popuwindos,然后动画样式设置是左到右,或者右到左,这种滑入滑出的感觉,然后监听dismiss,控制窗口透明度,就是周围变暗,突出菜单栏,点击事件可以构造方法传入包括更新popuwinds上的头像姓名也可以设置get方法拿到对象,
public TextView getStartview(){ return starttime; }
然后调用update()更新
popMenus2.getStartview().setText(pickstarttimet); popMenus2.update(); popMenus2.showAtLocation(MainActivity.this.findViewById(R.id.main_layout), Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL, 0, 0);
接下来上代码:
1.布局
主布局就直接 relativlayout 替代标题(style是NoActionbar)
<RelativeLayout android:layout_width="match_parent" android:layout_height="45dp" android:background="@color/titbar_color"> <ImageView android:id="@+id/lefthaha" android:clickable="true" android:layout_marginLeft="20dp" android:layout_centerVertical="true" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/title_but_left3x"/> <TextView android:id="@+id/titlehaha" android:text="我是主题" android:textSize="18sp" android:textColor="@color/white" android:layout_centerHorizontal="true" android:layout_centerVertical="true"