滚动后,带webview的导航抽屉自动关闭

时间:2014-01-27 21:42:37

标签: android

我在导航抽屉上放了一个webview; webview显示有关当前UI的格式化文本,以便用户可以熟悉其功能。

不幸的是,在webview上向上或向下滚动(禁用webview的水平滚动)后,导航抽屉在我从webview上抬起手指后自动关闭!

当用户放手时,如何防止导航抽屉自行关闭?

编辑: 其他发现...我已经将一个OnTouchListener()附加到抽屉的布局,除了返回true之外什么都不做。这可以防止在触摸导航抽屉上的空白区域时发生自动关闭。要了解如何完成此操作,请查看http://android-er.blogspot.com/2014/01/android-drawerlayout-and-drawerlistener.html并查看“实验性”评论。

很遗憾当用户未在网页浏览中完全向上/向下滚动时,它不会停止导航抽屉关闭。 例如,如果拖动的水平分量非常小,则在webview上上下滚动将关闭抽屉。

1 个答案:

答案 0 :(得分:0)

所以(无障碍)解决方案,以防止抽屉过度关闭:抽屉打开后,将其锁定打开并有一个按钮触发closeDrawer()。以下代码显示了如何管理锁定/解锁状态。它不包括调用closeDrawer()的按钮,因为它非常基本。

在XML中,DrawerLayout的id是:

<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" >

在您的Activity中,java代码是:

import android.support.v4.widget.DrawerLayout;

public class MyActivity extends Activity implements DrawerLayout.DrawerListener
{

    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.layoutwithdrawer);

        mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);

        mDrawerLayout.setDrawerListener(this);
    }

    @Override
    public void onDrawerClosed(View arg0) {
        // allow swiping to open the drawer
        mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED);
    }

    @Override
    public void onDrawerOpened(View arg0) {
        // disable swiping so that the drawer can't be closed by accident when scrolling through webview
        mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_OPEN);
    }

    @Override
    public void onDrawerSlide(View arg0, float arg1) {}

    @Override
    public void onDrawerStateChanged(int arg0) {}
}