其他分享
首页 > 其他分享> > android-如何在按下项目后立即关闭导航抽屉?

android-如何在按下项目后立即关闭导航抽屉?

作者:互联网

我使用的导航抽屉工作正常,但在按下某个项目后它关闭缓慢.如果下一个活动在oncreate方法中包含一个额外的代码,则此情况会发生,否则会正常工作.

所以请帮忙解决这个问题

解决方法:

我只是设法解决了您遇到的问题.

首先,我不得不说我正在处理Android Studio 1.1.0生成的NavigationDrawer项目.

这是NavigationNavigatorerFragment类的onCreateView()方法

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState)
{
    mDrawerListView = (ListView) inflater.inflate(
            R.layout.fragment_navigation_drawer, container, false);

    mDrawerListView.setOnItemClickListener(new AdapterView.OnItemClickListener()
    {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id)
        {
            selectItem(position);
        }
    });

    mDrawerListView.setAdapter(new ArrayAdapter<String>(
            getActionBar().getThemedContext(),
            android.R.layout.simple_list_item_activated_1,
            android.R.id.text1,
            new String[]{
                    getString(R.string.title_section1),
                    getString(R.string.title_section2),
                    getString(R.string.title_section3),
            }));

    mDrawerListView.setItemChecked(mCurrentSelectedPosition, true);

    return mDrawerListView;
}

单击项目后,

mDrawerListView.setOnItemClickListener()

回调将触发,然后球传给

selectItem(position)

方法.

“ selectItem()”方法隐藏了NavigationDrawer,并使用回调将其调用到“ MainActivity”类-onNavigationDrawerItemSelected()-中的方法,该方法开始过渡到所选片段.

发生动画卡顿/滞后是因为代码试图关闭NavigationDrawer并同时完成UI布局核心工作.

如果要避免延迟,则必须先选择要做什么.

在我自己的解决方法中,我决定:

>关闭NavigationDrawer
>完成UI(布局)作业

这是我自己的解决方案:

mDrawerListView.setOnItemClickListener(new AdapterView.OnItemClickListener()
{
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id)
    {
        final int pos = position;

        mDrawerLayout.setDrawerListener(new DrawerLayout.SimpleDrawerListener(){
            @Override
            public void onDrawerClosed(View drawerView)
            {
                super.onDrawerClosed(drawerView);
                selectItem(pos);
            }
        });

        mDrawerLayout.closeDrawer(mFragmentContainerView);
    }
});

不要被代码弄糊涂了.

我们将selectItem(pos)移到了仅在抽屉关闭后才触发的回调中,然后我们强制抽屉关闭,以免发生魔术.

该解决方案对我有用,希望知道它是否对您也有用.

标签:android,navigation,drawer
来源: https://codeday.me/bug/20191012/1903822.html