首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >材料设计抽屉

材料设计抽屉
EN

Stack Overflow用户
提问于 2015-03-12 23:20:50
回答 2查看 125关注 0票数 2

我遇到了一个小问题。

如何使抽屉在我们启动应用程序时已经打开(类似于静态菜单,但可以在我们按下箭头按钮时将其关闭)?我们有这个菜单:

https://github.com/kanytu/android-material-drawer-template

以及示例现在的样子:

EN

回答 2

Stack Overflow用户

发布于 2015-03-12 23:39:45

代码语言:javascript
复制
   protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    mToolbar = (Toolbar) findViewById(R.id.toolbar_actionbar);
    setSupportActionBar(mToolbar);
    getSupportActionBar().setDisplayShowHomeEnabled(true);



    mNavigationDrawerFragment = (NavigationDrawerFragment) getFragmentManager().findFragmentById(R.id.fragment_drawer);
    mNavigationDrawerFragment.setup(R.id.fragment_drawer, (DrawerLayout) findViewById(R.id.drawer), mToolbar);
}
票数 0
EN

Stack Overflow用户

发布于 2015-03-12 23:45:02

好的,由于您使用的是NavigationDrawerFragment,您可能遗漏了mUserLearnedDrawer属性和相关的行为。基本上,这个想法是在第一次打开抽屉时将属性保存在SharedPreferences中,并在每次调用setup()时检查该属性,这样您就可以知道是否需要在第一次为用户打开抽屉。看一下代码here。我在这里复制setup()方法,以防链接死掉:

代码语言:javascript
复制
public void setUp(int fragmentId, DrawerLayout drawerLayout, NavigationDrawerAdapter adapter, AvatarLoader avatar,
    User user) {
    mFragmentContainerView = getActivity().findViewById(fragmentId);
    mDrawerLayout = drawerLayout;
    mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START);

    avatar.bind(userImage, user);
    userName.setText(user.getLogin());

    String name = user.getName();
    if (name != null) {
        userRealName.setText(user.getName());
    } else {
        userRealName.setVisibility(View.GONE);
    }

    mDrawerListView.setAdapter(adapter);
    mDrawerListView.setItemChecked(mCurrentSelectedPosition, true);

    ActionBar actionBar = getActionBar();
    actionBar.setDisplayHomeAsUpEnabled(true);
    actionBar.setHomeButtonEnabled(true);

    mDrawerToggle = new ActionBarDrawerToggle(
        getActivity(), mDrawerLayout,
        R.string.navigation_drawer_open,
        R.string.navigation_drawer_close) {
        @Override
        public void onDrawerClosed(View drawerView) {
            super.onDrawerClosed(drawerView);
            if (!isAdded()) {
                return;
            }

            getActivity().supportInvalidateOptionsMenu();
        }

        @Override
        public void onDrawerOpened(View drawerView) {
            super.onDrawerOpened(drawerView);
            if (!isAdded()) {
                return;
            }

            if (!mUserLearnedDrawer) {
                mUserLearnedDrawer = true;
                SharedPreferences sp = PreferenceManager
                    .getDefaultSharedPreferences(getActivity());
                sp.edit().putBoolean(PREF_USER_LEARNED_DRAWER, true).apply();
            }

            getActivity().supportInvalidateOptionsMenu();
        }
    };

    if (!mUserLearnedDrawer && !mFromSavedInstanceState)
        mDrawerLayout.openDrawer(mFragmentContainerView);

    mDrawerLayout.post(new Runnable() {
        @Override
        public void run() {
            mDrawerToggle.syncState();
        }
    });

    mDrawerLayout.setDrawerListener(mDrawerToggle);

}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29013685

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档