所谓的滑动菜单就是将一些菜单选项隐藏起来,而不是放置在主屏幕上,然后可以通过滑动的方式将菜单显示出来。如果全靠自己实现的话会非常的困难,幸运的是,谷歌提供了一个DrawerLayout控件
假设我们要实现这样一个功能,点击一个导航按钮,展示滑动菜单
<android.support.v4.widget.DrawerLayout android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/drawer_layout"> <android.support.v4.widget.SwipeRefreshLayout android:id="@+id/swip_refresh" android:layout_width="match_parent" android:layout_height="match_parent"> <ScrollView android:id="@+id/weather_layout" android:scrollbars="none" android:overScrollMode="never" android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:fitsSystemWindows="true" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="wrap_content"> <include layout="@layout/title"/> <include layout="@layout/now"/> <include layout="@layout/forecast"/> <include layout="@layout/aqi"/> <include layout="@layout/suggestion"/> </LinearLayout> </ScrollView> </android.support.v4.widget.SwipeRefreshLayout> <fragment android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/choose_area_fragment" android:name="com.example.haley.coolweather.ChooseAreaFragment" android:layout_gravity="start" /> </android.support.v4.widget.DrawerLayout>
DrawerLayout是一个布局,在布局中允许放入两个直接子控件,第一个子空间是主屏幕中,显示的内容,第二个子空间是活动菜单中显示的内容,在这个demo中,我的一个子控件是天气预报的主界面,另一个子控件是一个fragment用于显示省份和城市,接下来再在一个button里面设置一个点击事件
navButton.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View view) { drawerLayout.openDrawer(GravityCompat.START); } });
效果展示如图: