我在导航抽屉上放了一个webview; webview显示有关当前UI的格式化文本,以便用户可以熟悉其功能。
不幸的是,在webview上向上或向下滚动(禁用webview的水平滚动)后,导航抽屉在我从webview上抬起手指后自动关闭!
当用户放手时,如何防止导航抽屉自行关闭?
编辑: 其他发现...我已经将一个OnTouchListener()附加到抽屉的布局,除了返回true之外什么都不做。这可以防止在触摸导航抽屉上的空白区域时发生自动关闭。要了解如何完成此操作,请查看http://android-er.blogspot.com/2014/01/android-drawerlayout-and-drawerlistener.html并查看“实验性”评论。
很遗憾当用户未在网页浏览中完全向上/向下滚动时,它不会停止导航抽屉关闭。 例如,如果拖动的水平分量非常小,则在webview上上下滚动将关闭抽屉。
答案 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) {}
}