Android使用DrawerLayout实现抽屉式侧滑菜单
2017-01-19 11:05
691 查看
转自Android开发者文档
https://developer.android.com/reference/android/support/v4/widget/DrawerLayout.html
布局文件
抽屉式导航栏列表
处理导航点击事件
监听打开和关闭事件
https://developer.android.com/reference/android/support/v4/widget/DrawerLayout.html
布局文件
.在 DrawerLayout 中,主内容视图(上面的 FrameLayout)必须是第一个子视图,因为 XML 顺序意味着按 z 序(层叠顺序)排序,并且抽屉式导航栏必须位于内容顶部。 .主内容视图设置为匹配父视图的宽度和高度, 因为在抽屉式导航栏处于隐藏状态时, 它代表整个 UI。 .抽屉式导航栏视图 (ListView) 必须使用 android:layout_gravity 属性指定其水平重力。要支持“从右到左”(RTL) 语言,请使用 "start"(而非 "left")指定该值(这样当布局为 RTL 时,抽屉式导航栏会显示在右侧)。
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent"> <FrameLayout android:id="@+id/content_frame" android:layout_width="match_parent" android:layout_height="match_parent" /> <ListView android:id="@+id/left_drawer" android:layout_width="240dp" android:layout_height="match_parent" android:layout_gravity="start" android:choiceMode="singleChoice" android:divider="@android:color/transparent" android:dividerHeight="0dp" android:background="#111"/> </android.support.v4.widget.DrawerLayout>
抽屉式导航栏列表
setContentView(R.layout.activity_main); mTitle = mDrawerTitle = getTitle(); mPlanetTitles = getResources().getStringArray(R.array.planets_array); mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); mDrawerList = (ListView) findViewById(R.id.left_drawer); mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START); mDrawerList.setAdapter(new ArrayAdapter<String>(this, R.layout.drawer_list_item, mPlanetTitles)); mDrawerList.setOnItemClickListener(new DrawerItemClickListener());
处理导航点击事件
private class DrawerItemClickListener implements ListView.OnItemClickListener { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { selectItem(position); } } /** Swaps fragments in the main content view */ private void selectItem(int position) { // Create a new fragment and specify the planet to show based on position Fragment fragment = new PlanetFragment(); Bundle args = new Bundle(); args.putInt(PlanetFragment.ARG_PLANET_NUMBER, position); fragment.setArguments(args); FragmentManager fragmentManager = getFragmentManager(); fragmentManager.beginTransaction() .replace(R.id.content_frame, fragment) .commit(); mDrawerList.setItemChecked(position, true); setTitle(mPlanetTitles[position]); mDrawerLayout.closeDrawer(mDrawerList); } @Override public void setTitle(CharSequence title) { mTitle = title; getActionBar().setTitle(mTitle); }
监听打开和关闭事件
public class MainActivity extends Activity { private DrawerLayout mDrawerLayout; private ActionBarDrawerToggle mDrawerToggle; private CharSequence mDrawerTitle; private CharSequence mTitle; ... @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ... mTitle = mDrawerTitle = getTitle(); mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, R.drawable.ic_drawer, R.string.drawer_open, R.string.drawer_close) { public void onDrawerClosed(View view) { super.onDrawerClosed(view); getActionBar().setTitle(mTitle); invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu() } public void onDrawerOpened(View drawerView) { super.onDrawerOpened(drawerView); getActionBar().setTitle(mDrawerTitle); invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu() } }; // Set the drawer toggle as the DrawerListener mDrawerLayout.setDrawerListener(mDrawerToggle); } /* Called whenever we call invalidateOptionsMenu() */ @Override public boolean onPrepareOptionsMenu(Menu menu) { boolean drawerOpen = mDrawerLayout.isDrawerOpen(mDrawerList); menu.findItem(R.id.action_websearch).setVisible(!drawerOpen); return super.onPrepareOptionsMenu(menu); } }
相关文章推荐
- Android Material Design系列之使用Toolbar + DrawerLayout实现高侧滑菜单
- Android 使用DrawerLayout快速实现侧滑菜单
- Android:使用Toolbar + DrawerLayout快速实现菜单侧滑
- android 使用drawerLayout实现侧滑菜单
- google 原生态 抽屉式侧滑菜单 Android DrawerLayout 布局的使用介绍
- Android使用DrawerLayout实现侧滑菜单效果
- Android使用DrawerLayout实现仿QQ双向侧滑菜单
- [AndroidUI]使用DrawerLayout实现侧滑菜单
- Android新手轻松学知乎日报开发(四)使用Toolbar + DrawerLayout实现菜单侧滑
- Android使用DrawerLayout和ToolBar实现仿知乎侧滑菜单
- android 使用DrawerLayout实现侧滑菜单
- Android 使用DrawerLayout实现抽屉效果的导航菜单
- Android 使用Toolbar+DrawerLayout快速实现仿“知乎APP”侧滑导航效果
- android 使用ViewDragHelper轻松实现DrawerLayout和SlidMenu侧滑效果
- Android基础入门教程——2.4.15 DrawerLayout(官方侧滑菜单)的简单使用
- android DrawerLayout实现仿QQ侧滑菜单
- Android-- 高仿QQ5.2双向侧滑菜单 使用DrawerLayout
- android L 新控件侧滑菜单DrawerLayout 使用教程
- android开发(38) 使用 DrawerLayou t实现左侧抽屉式导航菜单
- (4.1.34)Android侧滑菜单DrawerLayout的使用