NavigationView动态设置头像

今天准备在项目中为我的NavigationView里面的header部分动态设置头像时出错了

  • 先来看一下我的错误做法
  • 第一次我是直接用findViewByID想得到header里面的ImageView的控件实例的
  • 却是直接报空指针,百思不得其解
  • 第二次我发现NavigationView里面有个可以直接得到header的方法,看下图这里写图片描述
  • 可以发现,三个方法都返回的是header里面的控件实例,可用了之后奈何还是直接报空指针
  • 最后无奈,找度娘,以下是能正确实现的代码
var view = cehua_navigationView!!.inflateHeaderView(R.layout.header)
var headerImage = view!!.findViewById<ImageView>(R.id.headimageview)
var s = "http://img1.imgtn.bdimg.com/it/u=3361421522,2570093&fm=27&gp=0.jpg"
Glide.with(this).load(s).into(headerImage!!)
  • 可以看出,先是用navigationView加载出header实例,然后再去得到控件实例,原因不知道为什么这么搞
  • 然后我给我的ImageView用Glide设置了一个网络图片
  • 这里还可以设置点击监听之类的,自行发挥就好了

注意

  • 这样写之后需要在xml代码里面navigationView代码里面去掉
  • app:headerLayout="@layout/header" 这一行
  • 不然的话就会出现xml里面的header在上面,然后下面又加了一个我们自行添加的header,具体效果大家自行实现一下就好

猜你喜欢

转载自blog.csdn.net/asffghfgfghfg1556/article/details/79915197