DrawerLayout must be measured with MeasureSpec.EXACTLY.

遇到这种报错,检查下DrawerLayout是否是MATCH_PARENT或者确定值。
如果是但是还报这个错误,就往上找,必须都为MATCH_PARENT或者确定值。

image.png

在源码中,宽度和高度只要有一个不是MATCH_PARENT或者确定值就会报错。

isInEditMode()是干嘛的呢?这个是你在写xml布局的时候,右边的展示,也就是编辑模式,运行的时候是不会走这里的。

解决办法:
1.我的情况 是给DrawerLayout设置宽和高都是MATCH_PARENT,但是还是报错。
因为我的这个页是在首页的tab中,也就是在Fragment里面,这时候检查它所依赖的Activity中的FrameLayout布局,发现高度为WRAP_CONTENT,改成MATCH_PARENT就可以了。

2.还有一个解决办法就是网上好多人说的,自定义DrawerLayout,重写onMeasure方法为:

 @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        widthMeasureSpec = MeasureSpec.makeMeasureSpec(
                MeasureSpec.getSize(widthMeasureSpec), MeasureSpec.EXACTLY);
        heightMeasureSpec = MeasureSpec.makeMeasureSpec(
                MeasureSpec.getSize(heightMeasureSpec), MeasureSpec.EXACTLY);
        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
    }

你可能感兴趣的:(DrawerLayout must be measured with MeasureSpec.EXACTLY.)