Android导航抽屉触发区域过小 [英] Android navigation drawer trigger area is too small

查看:95
本文介绍了Android导航抽屉触发区域过小的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用官方android库提供的导航抽屉.我从左侧快速移动,问题是默认情况下触发区域太小,用户必须在最左侧触摸以打开抽屉,是否可以自定义尺寸或放大尺寸?感谢您的帮助.

I am working on the navigation drawer provide by the offical android library. And I swift it from left side, the problem is by default the trigger area is too small , the user have to touch at very left to open the drawer, are there any way to custom the size , or enlarge the size? Thanks for helping.

推荐答案

您可以执行以下操作:

private void setLeftMargin() {
    java.lang.reflect.Field mDragger = null;
    try {
        mDragger = mDrawerLayout.getClass()
                .getDeclaredField("mLeftDragger");
    } catch (NoSuchFieldException e2) {
        // TODO Auto-generated catch block
        e2.printStackTrace();
    }
    mDragger.setAccessible(true);
    ViewDragHelper draggerObj = null;
    try {
        draggerObj = (ViewDragHelper) mDragger.get(mDrawerLayout);
    } catch (IllegalArgumentException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IllegalAccessException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    java.lang.reflect.Field mEdgeSize = null;
    try {
        mEdgeSize = draggerObj.getClass().getDeclaredField("mEdgeSize");
    } catch (NoSuchFieldException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }
    mEdgeSize.setAccessible(true);
    int edge = 0;
    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 * 1);
    } catch (IllegalArgumentException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IllegalAccessException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

它将根据您的要求设置左侧区域.您可以设置int edge = valueYouNeed;希望它会为您提供帮助.

It will set left side area as per your requirement.You can set int edge = valueYouNeed;Hope it will help you.

这篇关于Android导航抽屉触发区域过小的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆