【发布时间】:2014-08-19 11:32:38
【问题描述】:
我想禁用打开导航抽屉的滑动手势,但仅限于特定片段,我的意思是我不想从整个应用程序中禁用它。
我阅读了很多问题,其中一个似乎有效,但我可能不明白我必须做什么:this
我试过这个:
MainActivity,onCreate:
mDrawer = (DrawerLayout) findViewById(R.id.drawer_layout);
mDrawer.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, R.layout.fragment_my_favourite);
R.layout.fragment_my_favourite:我要禁用抽屉的片段。
我会很感激任何提示。非常感谢
更新 1:
我试过这个:
主活动:
private ViewDragHelper draggerObj;
private Field mDragger;
private Field mEdgeSize;
private int edge;
private DrawerLayout mDrawer;
public void closeDrag()
{
try
{
mDragger = mDrawer.getClass().getDeclaredField("mLeftDragger");
}
catch (NoSuchFieldException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
mDragger.setAccessible(true);
try
{
draggerObj = (ViewDragHelper) mDragger.get(mDrawer);
}
catch (IllegalArgumentException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (IllegalAccessException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
try
{
mEdgeSize = draggerObj.getClass().getDeclaredField("mEdgeSize");
}
catch (NoSuchFieldException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
mEdgeSize.setAccessible(true);
try
{
edge = mEdgeSize.getInt(draggerObj);
}
catch (IllegalArgumentException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (IllegalAccessException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
try
{
mEdgeSize.setInt(draggerObj, edge * 0);
}
catch (IllegalArgumentException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (IllegalAccessException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
在我从我的片段中调用这个方法之后:
创建:
Activity activity = getActivity();
if (activity instanceof MainActivity){
((MainActivity) activity).closeDrag();
}
【问题讨论】:
-
您希望您的抽屉禁用仅用手指滑动吗?对
-
这正是我想要的,但只是在一个特定的片段中。
-
您能否发布更新的部分以及您的代码到底是什么?
-
您的 MainActivity 正在扩展 ActionBarActivity ?对
-
是的,它正在扩展 ActinBarActivity。抽屉正在工作,禁用打开抽屉的手势是不工作的。
标签: android navigation-drawer drawerlayout