如何检测导航抽屉是否打开?

Chi*_*bke 86 android android-navigation

标题解释了这一切.我想做的就是知道导航抽屉是否打开.我在网上搜索了很多并找到了方法,isDrawerOpen(int drawerGravity)但找不到一个令人满意的答案,解释了如何在方法中使用它.如果有人向我解释,我将不胜感激.

提前致谢!

Neo*_*eoh 203

假设您已在xml中定义了drawerlayout:

DrawerLayout mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
...
if(mDrawerLayout.isDrawerOpen(GravityCompat.START)) {
  //drawer is open
}
Run Code Online (Sandbox Code Playgroud)

  • 虽然对许多人来说可能是显而易见的,但是我想指出,如果从右边打开抽屉(即android:layout_gravity ="right"),应该使用isDrawerOpen(GravityCompat.END)) (8认同)
  • 如果你要关闭,你应该在staments drawer.closeDrawer(Gravity.START)中添加这个cament. (2认同)

Sha*_*keJ 31

 mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
    mDrawerToggle = new ActionBarDrawerToggle(
            this,                  /* host Activity */
            mDrawerLayout,         /* DrawerLayout object */
            R.drawable.ic_drawer,  /* nav drawer icon to replace 'Up' caret */
            R.string.drawer_open,  /* "open drawer" description */
            R.string.drawer_close  /* "close drawer" description */
            ) {

        /** Called when a drawer has settled in a completely closed state. */
        public void onDrawerClosed(View view) {
            super.onDrawerClosed(view);
            getActionBar().setTitle(mTitle);
        }

        /** Called when a drawer has settled in a completely open state. */
        public void onDrawerOpened(View drawerView) {
            super.onDrawerOpened(drawerView);
            getActionBar().setTitle(mDrawerTitle);
        }
    };

    // Set the drawer toggle as the DrawerListener
    mDrawerLayout.setDrawerListener(mDrawerToggle);
Run Code Online (Sandbox Code Playgroud)

听众使用:)


Jor*_*sys 19

使用:

mDrawerLayout.isDrawerOpen()方法

例:

    if(mDrawerLayout.isDrawerOpen(GravityCompat.START)) {
        mDrawerLayout.closeDrawer(Gravity.LEFT); //CLOSE Nav Drawer!
    }else{
        mDrawerLayout.openDrawer(Gravity.LEFT); //OPEN Nav Drawer!
    }
Run Code Online (Sandbox Code Playgroud)

  • 如果抽屉打开,打开抽屉,否则关闭抽屉:D (3认同)

Gya*_*thi 5

通过以下方式您可以找到抽屉是打开还是关闭..

 public class YourActivity extends AppCompatActivity implements  DrawerLayout.DrawerListener {

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_dash_board);

        DrawerLayout drawer=(DrawerLayout)findViewById(R.id.container);
        drawer.setDrawerListener(this);
    }//onCreate()

    @Override
    public void onDrawerOpened(View arg0) {
      //write your code
    }

    @Override
    public void onDrawerClosed(View arg0) {
        //write your code
    }

    @Override
    public void onDrawerSlide(View arg0, float arg1) {
        //write your code
    }

    @Override
    public void onDrawerStateChanged(int arg0) {
        //write your code
    }
}//class
Run Code Online (Sandbox Code Playgroud)