android.support.v4.widget.DrawerLayout类的使用及代码示例

x33g5p2x  于2022-01-18 转载在 其他  
字(13.1k)|赞(0)|评价(0)|浏览(352)

本文整理了Java中android.support.v4.widget.DrawerLayout类的一些代码示例,展示了DrawerLayout类的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。DrawerLayout类的具体详情如下:
包路径:android.support.v4.widget.DrawerLayout
类名称:DrawerLayout

DrawerLayout介绍

[英]DrawerLayout acts as a top-level container for window content that allows for interactive "drawer" views to be pulled out from the edge of the window.

Drawer positioning and layout is controlled using the android:layout_gravity attribute on child views corresponding to which side of the view you want the drawer to emerge from: left or right. (Or start/end on platform versions that support layout direction.)

To use a DrawerLayout, position your primary content view as the first child with a width and height of match_parent. Add drawers as child views after the main content view and set the layout_gravity appropriately. Drawers commonly use match_parent for height with a fixed width.

DrawerListener can be used to monitor the state and motion of drawer views. Avoid performing expensive operations such as layout during animation as it can cause stuttering; try to perform expensive operations during the #STATE_IDLE state. SimpleDrawerListener offers default/no-op implementations of each callback method.

As per the Android Design guide, any drawers positioned to the left/start should always contain content for navigating around the application, whereas any drawers positioned to the right/end should always contain actions to take on the current content. This preserves the same navigation left, actions right structure present in the Action Bar and elsewhere.

For more information about how to use DrawerLayout, read Creating a Navigation Drawer.
[中]抽屉布局作为窗口内容的顶级容器,允许从窗口边缘拉出交互式“抽屉”视图。
抽屉的定位和布局是使用子视图上的android:layout_gravity属性来控制的,子视图对应于您希望抽屉从视图的哪一侧出现:左视图还是右视图。(或支持布局方向的开始/结束平台版本。)
要使用抽屉布局,请将主内容视图定位为第一个子视图,其宽度和高度为match_parent。在主内容视图之后添加抽屉作为子视图,并适当设置layout_gravity。抽屉通常使用match_parent表示固定宽度的高度。
DrawerListener可用于监视抽屉视图的状态和运动。避免在动画期间执行昂贵的操作,如布局,因为这可能会导致口吃;尝试在#状态#空闲状态下执行昂贵的操作。SimpleDrawerListener提供每个回调方法的默认/无操作实现。
根据Android Design guide,位于左侧/开始位置的任何抽屉都应始终包含用于在应用程序中导航的内容,而位于右侧/结束位置的任何抽屉都应始终包含对当前内容执行的操作。这将保留操作栏和其他位置中存在的相同导航左、操作右结构。
有关如何使用抽屉布局的详细信息,请阅读Creating a Navigation Drawer

代码示例

代码示例来源:origin: fython/MaterialStepperView

@Override
public boolean onOptionsItemSelected(MenuItem item) {
  switch (item.getItemId()) {
    case android.R.id.home:
      if (mDrawerLayout.isDrawerOpen(mNavigationView)) {
        mDrawerLayout.closeDrawer(mNavigationView);
      } else {
        mDrawerLayout.openDrawer(mNavigationView);
      }
      return true;
    default:
      return false;
  }
}

代码示例来源:origin: stackoverflow.com

mLeftDrawerView = findViewById(R.id.left_drawer);
    mRightDrawerView = findViewById(R.id.right_drawer);
    mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, R.drawable.ic_navigation_drawer, R.string.drawer_open, R.string.drawer_close) {
          getSupportActionBar().setTitle(getTitle());
          mDrawerToggle.syncState();
          getSupportActionBar().setTitle(getString(R.string.app_name));
          mDrawerToggle.syncState();
    mDrawerLayout.setDrawerListener(mDrawerToggle); // Set the drawer toggle as the DrawerListener
    menu.getItem(i).setVisible(!mDrawerLayout.isDrawerOpen(mLeftDrawerView));
public boolean onOptionsItemSelected(MenuItem item) {
  switch(item.getItemId()) {
    case android.R.id.home:
      mDrawerToggle.onOptionsItemSelected(item);
      if(mDrawerLayout.isDrawerOpen(mRightDrawerView))
        mDrawerLayout.closeDrawer(mRightDrawerView);

代码示例来源:origin: north2016/T-MVP

@Override
public void initView() {
  ActionBarDrawerToggle mDrawerToggle = new ActionBarDrawerToggle(this, mViewBinding.dlMainDrawer, R.string.drawer_open, R.string.drawer_close);
  mDrawerToggle.syncState();
  mViewBinding.dlMainDrawer.addDrawerListener(mDrawerToggle);
  mViewBinding.nvMainNavigation.setNavigationItemSelectedListener(this);
}

代码示例来源:origin: stackoverflow.com

@Override
public void onBackPressed() {
  DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
  if (drawer.isDrawerOpen(GravityCompat.START)) {
    drawer.closeDrawer(GravityCompat.START);
  }
  if (!viewIsAtHome) { //if the current view is not the News fragment
    displayView(R.id.nav_news); //display the News fragment
  } else {
    moveTaskToBack(true);  //If view is in News fragment, exit application
  }
}

代码示例来源:origin: HotBitmapGG/bilibili-android-client

/**
 * DrawerLayout侧滑菜单开关
 */
public void toggleDrawer() {
  if (mDrawerLayout.isDrawerOpen(GravityCompat.START)) {
    mDrawerLayout.closeDrawer(GravityCompat.START);
  } else {
    mDrawerLayout.openDrawer(GravityCompat.START);
  }
}

代码示例来源:origin: stackoverflow.com

mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START);
  mDrawerToggle = new ActionBarDrawerToggle(
      this,                  /* host Activity */
  mDrawerLayout.setDrawerListener(mDrawerToggle);
    selectItem(0);
public boolean onPrepareOptionsMenu(Menu menu) {
  boolean drawerOpen = mDrawerLayout.isDrawerOpen(mDrawerList);
  menu.findItem(R.id.action_websearch).setVisible(!drawerOpen);
  return super.onPrepareOptionsMenu(menu);
  if (mDrawerToggle.onOptionsItemSelected(item)) {
    return true;
    intent.putExtra(SearchManager.QUERY, getSupportActionBar().getTitle());
  mDrawerList.setItemChecked(position, true);
  setTitle(mPlanetTitles[position]);
  mDrawerLayout.closeDrawer(mDrawerList);
  super.onPostCreate(savedInstanceState);
  mDrawerToggle.syncState();

代码示例来源:origin: JohnPersano/SuperToasts

@Override
@SuppressWarnings("StatementWithEmptyBody")
public boolean onNavigationItemSelected(MenuItem item) {
  switch (item.getItemId()) {
    case R.id.navigation_drawer_supertoast:
      getSupportFragmentManager()
      startActivity(new Intent(this, Playground.class));
      break;
      startActivity(new Intent(this, AboutActivity.class));
      break;
  ((DrawerLayout) findViewById(R.id.drawer_layout)).closeDrawer(GravityCompat.START);
  return true;

代码示例来源:origin: iMeiji/Toutiao

@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
  int id = item.getItemId();
  switch (id) {
      startActivity(new Intent(this, SettingActivity.class));
      drawer_layout.closeDrawers();
      return false;
      Intent shareIntent = new Intent()
          .setAction(Intent.ACTION_SEND)
          .setType("text/plain")
          .putExtra(Intent.EXTRA_TEXT, getString(R.string.share_app_text) + getString(R.string.source_code_url));
      startActivity(Intent.createChooser(shareIntent, getString(R.string.share_to)));
      drawer_layout.closeDrawers();
      return false;

代码示例来源:origin: stackoverflow.com

mDrawerLayout.setStatusBarBackgroundColor(getResources().getColor(R.color.primaryDark));
  mDrawerList.setAdapter(new ArrayAdapter<>
      (this, android.R.layout.simple_list_item_1, mDrawerListItems));
  mDrawerList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
      openFragment(position);
  mDrawerToggle = new ActionBarDrawerToggle(this,
      mDrawerLayout,
      toolbar,
  mDrawerLayout.setDrawerListener(mDrawerToggle);
  mDrawerToggle.syncState();
protected void onPostCreate(Bundle savedInstanceState){
  super.onPostCreate(savedInstanceState);
  mDrawerToggle.syncState();
  switch (item.getItemId()){
    case android.R.id.home: {
      if (mDrawerLayout.isDrawerOpen(mDrawerList)){
        mDrawerLayout.closeDrawer(mDrawerList);
      } else {
        mDrawerLayout.openDrawer(mDrawerList);

代码示例来源:origin: stackoverflow.com

mListview.setAdapter(mAccountAdapter);
    @Override
    public void onClick(View v) {
      mdrawerlayout.openDrawer(mListview);
      if (mdrawerlayout.isDrawerOpen(mListview)) {
        mdrawerlayout.closeDrawer(mListview);
  mListview.setOnItemClickListener(new SelectItemFormListView());
  fragObj.replaceFragment(0);
public boolean onOptionsItemSelected(MenuItem item) {
  int id = item.getItemId();
  return super.onOptionsItemSelected(item);
  public void onItemClick(AdapterView<?> parent, View view, int position,
      long id) {
    mdrawerlayout.closeDrawer(mListview);
      startActivity(new Intent(HomeActivity.this, MainAcivity.class));

代码示例来源:origin: xinghongfei/LookLook

@Override
  public boolean onNavigationItemSelected(MenuItem item) {
    if(currentMenuItem!=null&&item.getItemId()==R.id.menu_about)
    {
      Intent intent = new Intent(getApplication(), AboutActivity.class);
      getApplication().startActivity(intent);
      return true;
    }
    if (currentMenuItem != item && currentMenuItem != null) {
      currentMenuItem.setChecked(false);
      int id = item.getItemId();
      SharePreferenceUtil.putNevigationItem(MainActivity.this, id);
      currentMenuItem = item;
      currentMenuItem.setChecked(true);
      switchFragment(getFragmentById(currentMenuItem.getItemId()), mTitleArryMap.get(currentMenuItem.getItemId()));
    }
    drawer.closeDrawer(GravityCompat.END, true);
    return true;
  }
});

代码示例来源:origin: naman14/Timber

private void updatePosition(final MenuItem menuItem) {
  runnable = null;
  switch (menuItem.getItemId()) {
    case R.id.nav_library:
      runnable = navigateLibrary;
    case R.id.nav_nowplaying:
      if (getCastSession() != null) {
        startActivity(new Intent(MainActivity.this, ExpandedControlsActivity.class));
      } else {
        NavigationUtils.navigateToNowplaying(MainActivity.this, false);
      break;
    case R.id.nav_about:
      mDrawerLayout.closeDrawers();
      Handler handler = new Handler();
      handler.postDelayed(new Runnable() {
      startActivity(new Intent(MainActivity.this, DonateActivity.class));
      break;
    menuItem.setChecked(true);
    mDrawerLayout.closeDrawers();
    Handler handler = new Handler();
    handler.postDelayed(new Runnable() {

代码示例来源:origin: stackoverflow.com

drawerLayout.addDrawerListener(new DrawerLayout.SimpleDrawerListener() {
  @Override
  public void onDrawerClosed(View drawerView) {
    super.onDrawerClosed(drawerView);
    if(menuItemWaiting != null) {
      onNavigationItemSelected(menuItemWaiting);
if(drawerLayout.isDrawerOpen(GravityCompat.START)) {
  menuItemWaiting = menuItem;
  drawerLayout.closeDrawers();
  return false;
};
switch(menuItem.getItemId()) {
  case R.id.drawer_action:
    startActivity(new Intent(this, SecondActivity.class));

代码示例来源:origin: aa112901/remusic

@Override
public boolean onOptionsItemSelected(MenuItem item) {
  // handle item selection
  switch (item.getItemId()) {
    case android.R.id.home: //Menu icon
      drawerLayout.openDrawer(Gravity.LEFT);
      return true;
    default:
      return super.onOptionsItemSelected(item);
  }
}

代码示例来源:origin: stackoverflow.com

drawerLayout.setDrawerShadow(
    R.drawable.drawer_shadow, GravityCompat.START);
drawerList.setAdapter(menuAdapter);
drawerList.setOnItemClickListener(new DrawerItemClickListener());
drawerLayout.setDrawerListener(drawerToggle);
  selectItem(0);
if (item.getItemId() == android.R.id.home){
  if (drawerLayout.isDrawerOpen(drawerList)){
    drawerLayout.closeDrawer(drawerList);
  } else {
    drawerLayout.openDrawer(drawerList);
drawerToggle.syncState();
drawerToggle.onConfigurationChanged(newConfig);
drawerList.setItemChecked(position, true);
drawerLayout.closeDrawer(drawerList);
  selectItem(position);

代码示例来源:origin: stackoverflow.com

navArray.add("Search");
  navList.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
  navList.setAdapter(adapter);
  navList.setOnItemClickListener(this);
  Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
  setSupportActionBar(toolbar);
  drawerLayout.setDrawerListener(actionBarDrawerToggle);
public void onPostCreate(Bundle savedInstanceState, PersistableBundle persistentState) {
  super.onPostCreate(savedInstanceState, persistentState);
  actionBarDrawerToggle.syncState();
  int id = item.getItemId();
    return true;
  }else if (id==android.R.id.home){
    if(drawerLayout.isDrawerOpen(navList)){
      drawerLayout.closeDrawer(navList);
    }else{
      drawerLayout.openDrawer(navList);
  loadSelection(position);
  drawerLayout.closeDrawer(navList);

代码示例来源:origin: stackoverflow.com

mDrawerToggle = new ActionBarDrawerToggle(
      this,                  /* host Activity */
  drawer.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, titles));
  drawer.setOnItemClickListener(new DrawerItemClickListener());
  mDrawerLayout.setDrawerListener(mDrawerToggle);
  ActionBar actionbar = getSupportActionBar();
  actionbar.setDisplayHomeAsUpEnabled(true);
  mDrawerToggle.syncState();
public void onConfigurationChanged(Configuration newConfig) {
  super.onConfigurationChanged(newConfig);
  mDrawerToggle.onConfigurationChanged(newConfig);
public boolean onOptionsItemSelected(MenuItem item) {
  if(item.getItemId() == android.R.id.home) {
    if (mDrawerLayout.isDrawerVisible(GravityCompat.START)) {
      mDrawerLayout.closeDrawer(GravityCompat.START);
    } else {
      mDrawerLayout.openDrawer(GravityCompat.START);

代码示例来源:origin: stackoverflow.com

drawerList.setAdapter(new ArrayAdapter<String>(this,
      android.R.layout.simple_list_item_1, options));
  drawerList.setOnItemClickListener(this);
  mDrawerToggle = new ActionBarDrawerToggle(this, drawerLayout, R.string.drawer_open, R.string.drawer_close) {
  mDrawerToggle.setDrawerIndicatorEnabled(true);
  drawerLayout.setDrawerListener(mDrawerToggle);
      drawerLayout.closeDrawer(drawerList);
      break;
public boolean onOptionsItemSelected(MenuItem item) {
  int id = item.getItemId();
  if (mDrawerToggle.onOptionsItemSelected(item)) {
    return true;

代码示例来源:origin: mayubao/KuaiChuan

ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
    this, mDrawerLayout, null, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
mDrawerLayout.setDrawerListener(toggle);
toggle.syncState();
  tv_name = (TextView) mNavigationView.getHeaderView(0).findViewById(R.id.tv_name);
  tv_name.setText(device);
}catch(Exception e){

代码示例来源:origin: stackoverflow.com

toggle = new ActionBarDrawerToggle(
      this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
  drawer.setDrawerListener(toggle);
  toggle.syncState();
  final NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
  navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
    @Override
    public boolean onNavigationItemSelected(MenuItem menuItem) {
      drawer.closeDrawers();
      int itemId = menuItem.getItemId();
      Toast.makeText(getApplicationContext(), menuItem.getTitle().toString(),
          Toast.LENGTH_LONG).show();
public boolean onOptionsItemSelected(MenuItem item)
  if (toggle.onOptionsItemSelected(item))

相关文章