【问题标题】:Android DrawerLayout - too slow upon item clickAndroid DrawerLayout - 项目点击太慢
【发布时间】:2016-12-14 01:24:30
【问题描述】:

我希望我的导航抽屉在单击时顺利打开片段并自行关闭而没有任何延迟。

这里是代码 -

@Override
    protected void onCreate(Bundle savedInstanceState) {   
  navigationView.setNavigationItemSelectedListener(this);
            drawerLayout.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START);
            drawerToggle = new ActionBarDrawerToggle(this, drawerLayout, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);

            // Set the drawer toggle as the DrawerListener
            drawerLayout.setDrawerListener(drawerToggle);

            drawerToggle.setToolbarNavigationClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    onBackPressed();
                }
            });

            if (getSupportActionBar() != null) {

                getSupportActionBar().setDisplayHomeAsUpEnabled(false);
                getSupportActionBar().setHomeButtonEnabled(false);
            }

            onNavigationItemSelected(navigationView.getMenu().getItem(0));

            @Override
        public boolean onNavigationItemSelected(MenuItem menuItem) {

            /* clear backstack of all elements but the last one
             * which is the car keys screen
             */
            for (int i = 1; i < fm.getBackStackEntryCount(); ++i) {
                fm.popBackStack();
            }
    }

        navigationView.getMenu().findItem(R.id.navigation_settings).setVisible(false);


        switch (menuItem.getItemId()) {
            case R.id.navigation_home:
                fragment = new HomeFragment();
                break;

        }

        if (menuItem.getGroupId() == R.id.group_top) {

            navigationView.getMenu().setGroupCheckable(R.id.group_bottom, false, true);
            navigationView.getMenu().setGroupCheckable(R.id.group_top, true, true);
        } else {

            navigationView.getMenu().setGroupCheckable(R.id.group_bottom, true, true);
            navigationView.getMenu().setGroupCheckable(R.id.group_top, false, true);
        }

        //Update highlighted item in the navigation menu
        menuItem.setChecked(true);

        if (fragment != null) {
            drawerLayout.closeDrawer(navigationView);
            setTitle(menuItem.getTitle());

            menuItem.setChecked(true);
            fm.beginTransaction()
                    .replace(R.id.container, fragment)
                    .addToBackStack("fragment")
                    .commit();
            return true;
        }



        return false;
    }

这是在MainActivity

我哪里出错了?为什么运行不顺畅?

提前谢谢你:)

【问题讨论】:

  • 关闭前的导航抽屉

标签: android navigation-drawer


【解决方案1】:

试着把它放到一个线程中,稍微延迟一下,这样它就会完成他的其他命令,比如:

    new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {
              if(drawerLayout!=null)
                  drawerLayout.closeDrawer(navigationView);
        }
    }, 150);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-03
    • 2013-08-07
    • 2012-04-13
    • 1970-01-01
    • 1970-01-01
    • 2012-06-06
    相关资源
    最近更新 更多