首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >DrawerLayout在刷卡时卡住

DrawerLayout在刷卡时卡住
EN

Stack Overflow用户
提问于 2013-08-03 14:03:06
回答 5查看 5K关注 0票数 35

我在玩DrawerLayout,我遇到了一个问题。基本上有时候,当我从屏幕边缘滑动时,DrawerLayout会卡住,直到我把手指从屏幕上移开(见下面的截图)。

我不确定是怎么回事,我完全按照google sdk中的代码示例进行了操作。有什么想法吗?

这是我的FragmentActivity中唯一的东西:

代码语言:javascript
复制
@Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        final String[] names =
                getResources().getStringArray(R.array.nav_names);
        ArrayAdapter<String> adapter =
                new ArrayAdapter<String>(
                        getActionBar().getThemedContext(),
                        android.R.layout.simple_list_item_1, names);

        final DrawerLayout drawer =
                (DrawerLayout)findViewById(R.id.drawer_layout);
        final ListView navList =
                (ListView) findViewById(R.id.drawer);
        navList.setAdapter(adapter);
        navList.setOnItemClickListener(new AdapterView.OnItemClickListener()
        {

            @Override
            public void onItemClick(AdapterView<?> parent,
                                    View view, final int pos, long id)
            {
                drawer.setDrawerListener(
                        new DrawerLayout.SimpleDrawerListener()
                        {
                            @Override
                            public void onDrawerClosed(View drawerView)
                            {
                                super.onDrawerClosed(drawerView);

                            }
                        });
                drawer.closeDrawer(navList);
            }
        });

    }

编辑:我在这方面添加了一个赏金,因为这是一个非常老的问题,即使在最新的Android-X (示例可用)的今天仍然存在。下面是它的外观:

我已经向谷歌(和后来的)报告了这件事,但它没有帮助。

我已经在这个线程上尝试了所有现有的解决方案,但都没有奏效。如果有人对此有很好的解决方法(同时仍在使用DrawerLayout或扩展它,或类似的东西),请提出一个有效的解决方案。

EN

回答 5

Stack Overflow用户

发布于 2013-11-16 15:45:24

请注意,您可以通过在DrawerLayout中的FrameLayout上将clickable属性设置为true来绕过这个20dp的窥视功能。

android:clickable="true“

例如:http://developer.android.com/training/implementing-navigation/nav-drawer.html

代码语言:javascript
复制
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <!-- The main content view -->
    <FrameLayout
        android:id="@+id/content_frame"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:clickable="true" />
    <!-- The navigation drawer -->
    <ListView
        android:id="@+id/left_drawer"
        android:layout_width="240dp"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:background="#111"
        android:choiceMode="singleChoice"
        android:divider="@android:color/darker_gray"
        android:dividerHeight="1dp" />
</android.support.v4.widget.DrawerLayout>
票数 16
EN

Stack Overflow用户

发布于 2015-09-02 22:22:03

如果您向我们展示了您的布局xml,我们就可以看到您是否将DrawerLayout作为根元素。以及里面的两个子项是否是主布局和导航抽屉。

根据Create a Drawer Layout的说法

若要添加导航抽屉,请使用DrawerLayout对象将用户界面声明为布局的根视图。在DrawerLayout中,添加一个包含屏幕主要内容的视图(隐藏抽屉时的主要布局)和另一个包含导航抽屉内容的视图。

票数 0
EN

Stack Overflow用户

发布于 2018-01-08 00:26:40

我已经设法通过实现这个DrawerListener来解决这个问题:

代码语言:javascript
复制
drawerLayout.addDrawerListener(new DrawerLayout.SimpleDrawerListener() {
            @Override
            public void onDrawerStateChanged(int newState) {
                super.onDrawerStateChanged(newState);
                if (drawerLayout.isDrawerVisible(Gravity.LEFT) && !drawerLayout.isDrawerOpen(Gravity.LEFT)) {
                    drawerLayout.closeDrawer(Gravity.LEFT);
                }
            }
        });

每当状态改变时,如果抽屉可见但未打开,则意味着它正在“偷看”,因此我将其关闭。

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

https://stackoverflow.com/questions/18029874

复制
相关文章

相似问题

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