因为NavigationView必须嵌套在DrawerLayout里,当DrawerLayout不是根布局时,就没办法用match_parent等定义宽高,会报错。所以要重写DrawerLayout的onMeasure()方法:

public class MyDrawerLayout extends DrawerLayout {    public MyDrawerLayout(@NonNull Context context) {        super(context);    }    public MyDrawerLayout(@NonNull Context context, @Nullable AttributeSet attrs) {        super(context, attrs);    }    public MyDrawerLayout(@NonNull Context context, @Nullable AttributeSet attrs, int defStyle) {        super(context, attrs, defStyle);    }    @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);    }}

(以上代码copy的)

然后进行嵌套布局:

                

但是吧,NavigationView的宽度要比DrawerLayout小一点,待补充。

更多相关文章

  1. VideoView控件可以手动改变大小
  2. Android(安卓)Drawable 分类笔记
  3. Android(安卓)TextView 属性设置
  4. android java 小型知识点
  5. 33、Android(安卓)中子fragment控制父对象改变布局
  6. 总结Android多分辨率支持
  7. android:layout_weight属性
  8. 剖析Android(安卓)线性布局中的权重(layout_weight)(解答疑惑)
  9. Android(安卓)alertdialog的自定义添加按钮和添加点击

随机推荐

  1. android消息机制总结
  2. Android中触摸事件传递机制
  3. 杭州_大雲架構師_培訓課程
  4. Android串口通信
  5. Android防重签名和二次打包
  6. Android整合Maven笔记(一)——在Android项
  7. Android中系统触摸相关辅助类总结
  8. IOS/Android(安卓)移动端原生及自定义控
  9. Android之adb的使用
  10. Android(安卓)handler使用