如何禁用导航抽屉菜单按钮?

时间:2017-01-07 09:51:56

标签: android android-fragments navigation-drawer menuitem

当我通过点击Fragment菜单按钮移动到另一个NavigationDrawer时我想要的是什么,然后按钮应该被禁用。

因为addToBackStack();方法在反复单击时多次在其堆栈中添加。因此,当我移动到另一个片段时,想要禁用它。

4 个答案:

答案 0 :(得分:1)

要在导航栏使用中禁用切换按钮

drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);

启用LOCK_MODE_LOCKED_OPEN替换LOCK_MODE_LOCKED_CLOSED

要停用抽屉项目,请点击

  1. 请参阅Hide Some Navigation Drawer Menu Item - Android,您可以将其隐藏
  2. 如果您不希望隐藏在onNavigationItemSelected中,您检查(id == R.id.whatevertheitemid)也可以使用布尔值来允许访问
  3. 例如

    if (id == R.id.whatevertheitemid && isAccessGiven) { // do your task
     }
    

答案 1 :(得分:1)

它可以帮助我解决此问题:

     @Override
        public boolean onNavigationItemSelected(MenuItem item) {
              int id = item.getItemId();

     if(id==R.id.nav_item1){   //use can write your menu item here
         return false;
            }

            DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
            drawer.closeDrawer(GravityCompat.START);
            return true;
        }

答案 2 :(得分:1)

科特林:

<li class="wc_payment_method payment_method_<?php echo esc_attr( $gateway->id ); ?>">
<input id="payment_method_<?php echo esc_attr( $gateway->id ); ?>" type="radio" class="input-radio" name="payment_method" value="<?php echo esc_attr( $gateway->id ); ?>" <?php checked( $gateway->chosen, true ); ?> data-order_button_text="<?php echo esc_attr( $gateway->order_button_text ); ?>" />

<label for="payment_method_<?php echo esc_attr( $gateway->id ); ?>">
    <?php echo $gateway->get_title(); /* phpcs:ignore WordPress.XSS.EscapeOutput.OutputNotEscaped */ ?> <?php echo $gateway->get_icon(); /* phpcs:ignore WordPress.XSS.EscapeOutput.OutputNotEscaped */ ?>
</label>
<?php if ( $gateway->has_fields() || $gateway->get_description() ) : ?>
    <div class="payment_box payment_method_<?php echo esc_attr( $gateway->id ); ?>" <?php if ( ! $gateway->chosen ) : /* phpcs:ignore Squiz.ControlStructures.ControlSignature.NewlineAfterOpenBrace */ ?>style="display:none;"<?php endif; /* phpcs:ignore Squiz.ControlStructures.ControlSignature.NewlineAfterOpenBrace */ ?>>
        <?php $gateway->payment_fields(); ?>
    </div>
<?php endif; ?>

这是我的工作,并且抽屉中的禁用项目切换菜单

在Java中:

navigation.menu.findItem(R.id.your_target_item_id).setEnabled(false)

答案 3 :(得分:0)

使用此选项禁用菜单项:

NavigationView navigationView;

navigationView = (NavigationView) findViewById(R.id.nav_view);
        navigationView.setNavigationItemSelectedListener(this);

现在在菜单项中点击:

Menu menuView= navigationView.getMenu();
menuView.getItem(ID).setEnabled(false);