所以我遇到了一种非常奇怪的行为.我有一个NavigationDrawer
和里面我有我的导航标题,它有一个Facebook ProfilePictureView
和一个TextView
.
问题是,当我运行我的应用程序时,导航标题中有两个ProfileImageViews.即使在Android Studio中,标题xml的预览也会ProfileImageView
正确显示.
我在下面附上了截图:
这是我的nav_header_home.xml
文件代码:
这就是我初始化它的方式:
View headerView = navigationView.inflateHeaderView(R.layout.nav_header_home); usernameTextView = (TextView)headerView.findViewById(R.id.tv_username); profileImage = (ProfilePictureView)headerView.findViewById(R.id.profile_image);
这是另一种可能有助于解决问题的奇怪行为:
当我这样初始化时ProfilePictureView
:
profileImage = (ProfilePictureView)findViewById(R.id.profile_image);
然后将图像设置为视图,顶部的视图显示图像.
如果我像这样初始化:
profileImage = (ProfilePictureView)headerView.findViewById(R.id.profile_image);
然后底部的视图显示图像.
好吧,我发现了问题.这条线View headerView = navigationView.inflateHeaderView(R.layout.nav_header_home);
似乎没有得到当前的信号header
,相反它似乎膨胀并创建一个新的,这可能是我ProfilePictureView
被添加两次的原因!
用View headerView = navigationView.getHeaderView(0);
作品代替它!它正确获取当前标题!