首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >导航抽屉-禁止点击抽屉后面的项目

导航抽屉-禁止点击抽屉后面的项目
EN

Stack Overflow用户
提问于 2013-07-06 08:36:06
回答 5查看 24K关注 0票数 58

有没有办法确保导航抽屉停留在片段中的内容之上?

我用虚拟数据创建了一个小型测试应用程序。10个片段,带有相应的编号按钮和文本视图。问题在于,片段元素似乎比导航抽屉具有更高的优先级。

如截图所示,一旦我试图打开"0片段“,它就会选择注册点击导航抽屉后面的按钮。按下任何其他内容项都可以,但前提是它们下面没有其他可交互的项。我该怎么做才能让导航抽屉正确地停留在它后面的内容之上?

EN

回答 5

Stack Overflow用户

发布于 2013-10-11 06:33:57

在滑动窗格布局上设置android:clickable="true"标签。

票数 136
EN

Stack Overflow用户

发布于 2015-11-06 12:31:38

在我的片段抽屉中,我将TouchListener设置为return True。这对我很管用

代码语言:javascript
复制
        mFragmentContainerView.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            return true;
        }
    });
票数 3
EN

Stack Overflow用户

发布于 2016-10-19 20:13:27

我用一种不同的方式解决了它。

下面是我设置抽屉的代码:

代码语言:javascript
复制
/**
 * Setup Navigation Drawer
 */
private void setDrawer() {
    NavigationDrawerFragment mNavigationDrawerFragment = (NavigationDrawerFragment) getFragmentManager().findFragmentById(R.id.fragment_drawer);
    mNavigationDrawerFragment.setup(R.id.fragment_drawer, (DrawerLayout) findViewById(R.id.drawer), mToolbar);
}

setup方法在我的NavigationDrawerFragment中,下面是我的代码:

代码语言:javascript
复制
/**
 * Users of this fragment must call this method to set up the navigation drawer interactions.
 *
 * @param fragmentId   The android:id of this fragment in its activity's layout.
 * @param drawerLayout The DrawerLayout containing this fragment's UI.
 * @param toolbar      The Toolbar of the activity.
 */
public void setup(int fragmentId, DrawerLayout drawerLayout, Toolbar toolbar) {
    View mFragmentContainerView = (View) getActivity().findViewById(fragmentId).getParent();
    DrawerLayout mDrawerLayout = drawerLayout;

    //noinspection deprecation
    mDrawerLayout.setStatusBarBackgroundColor(getResources().getColor(R.color.colorPrimaryDark));

    ActionBarDrawerToggle mActionBarDrawerToggle = new ActionBarDrawerToggle(getActivity(), mDrawerLayout, toolbar, "Drawer opened", "Drawer closed") {
        @Override
        public void onDrawerClosed(View drawerView) {
            super.onDrawerClosed(drawerView);
            if (!isAdded()) return;

            // Solution:
            // Disable click event on views below Navigation Drawer
            mFragmentContainerView.setClickable(false);
            getActivity().invalidateOptionsMenu();
        }

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

            // Solution:
            // Enable click event on views below Navigation Drawer
            mFragmentContainerView.setClickable(true);
            getActivity().invalidateOptionsMenu();
        }
    };

    // Defer code dependent on restoration of previous instance state.
    mDrawerLayout.post(new Runnable() {
        @Override
        public void run() {
            mActionBarDrawerToggle.syncState();
        }
    });

    //noinspection deprecation
    mDrawerLayout.setDrawerListener(mActionBarDrawerToggle);
}

就这样

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

https://stackoverflow.com/questions/17498478

复制
相关文章

相似问题

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