选择项目后如何关闭导航栏?

时间:2014-12-22 02:49:39

标签: android android-fragments navigation-drawer

我已经实现了导航抽屉,一切都正常运行。导航抽屉包含列表视图,当选择项目时,主片段将被正确替换。

这是onClickListener代码:

mDrawerListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        HeaderViewListAdapter headerView = (HeaderViewListAdapter) parent.getAdapter();
        AccountAdapter adapter = (AccountAdapter) headerView.getWrappedAdapter();
        Cursor cursor = adapter.getCursor();

        if(cursor != null && cursor.moveToPosition(position)){
            ((NavigationDrawerCallbacks) getActivity()).onNavigationDrawerItemSelected(cursor.getLong(cursor.getColumnIndex(ID_COLUMN)));
        }
    }
});

在我的活动中,onNavigationDrawerItemSelected方法是这样的:

@Override
public void onNavigationDrawerItemSelected(long accountId) {
    // update the main content by replacing fragments
    FragmentManager fragmentManager = getSupportFragmentManager();
    fragmentManager.beginTransaction()
            .replace(R.id.mainFragment, AccountDetailFragment.newInstance(accountId))
            .commit();
}

正如我所说,这个功能,但导航抽屉保持打开状态。用户必须从列表视图中选择一个帐户,然后必须关闭抽屉以查看主要片段,这是一个麻烦,所以如何让它自动关闭,这样当选择一个项目时,唯一可见的元素是主片段(及其内部的所有内容)?

2 个答案:

答案 0 :(得分:4)

使用抽屉closeDrawer()或抽屉的DrawerLayout作为参数,调用View对象上的Gravity

答案 1 :(得分:2)

当抽屉布局不为空时,您需要在onItemClick内调用closeDrawer。

    if (mDrawerLayout != null) {
        mDrawerLayout.closeDrawer(mFragmentContainerView);
    }