因为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. Android中自定义控件之飞入飞出布局及随机布局实现方式
  2. adroid 现行布局水平居中位置
  3. Android百分比布局
  4. 完美解决Android Studio在写XML布局的时候没有了控件代码提示的
  5. Android 子控件高度超出父布局的限制
  6. android开发 使用uses-sdk 导致布局不一样解决
  7. android studio无法在可视化页面预览布局文件
  8. Android五大UI布局的特有属性

随机推荐

  1. 学 Win32 汇编[16]: 常用寄存器的常规功
  2. 学 Win32 汇编[25] - 符号扩展指令: CBW
  3. 学用 ASP.Net 之 "字符串" (3): string
  4. 学 Win32 汇编[17]: 关于压栈(PUSH)与出
  5. 学 Win32 汇编[26] - 加减指令: INC、DEC
  6. 学 Win32 汇编[18]: 关于压栈(PUSH)与出
  7. 学用 ASP.Net 之 "字符串" (4): string
  8. 学 Win32 汇编[27] - 乘除指令: MUL、IMU
  9. 学 Win32 汇编[19]: 查看二进制等相关函
  10. 学用 ASP.Net 之 "字符串" (5): StringBu