如何在使用 NavigationView.addHeaderView() 添加更新的 NavHeader 视图时删除现有的 NavHeader 视图?
How to delete existing NavHeader view while adding an updated one using NavigationView.addHeaderView()?
我在抽屉式布局中有一个 NavigationView,其中包含一个 HeaderView 后跟一个菜单(如 AndroidStudio 的 Navigation Drawer Activity 模板中所给)。我的 Header 在 LinearLayout 中包含一个图像和几个 TextView。我想从 SharedPreferences 编辑 header 中的一个 TextView。我使用以下函数来做到这一点
public void navUpdate()
{
navigationView=(NavigationView)findViewById(R.id.nav_view);
linearLayout=(LinearLayout) LayoutInflater.from(this).inflate(R.layout.nav_header_main, null);
textView_nname=(TextView)linearLayout.findViewById(R.id.textView_nname);
String name=sharedPreferences.getString("name","Your Name");
textView_nname.setText(name);
navigationView.removeHeaderView(linearLayout);
navigationView.addHeaderView(linearLayout);
}
问题是,虽然我添加了行
navigationView.removeHeaderView(linearLayout);
我以前的 header 视图在新视图上方仍然可见。并且上一个没有更新。我在许多答案中读到了 navigationview.getHeaderAt() 方法,但相信我,该方法不可用。
这个问题有解决办法吗,如果没有,还有其他办法吗?
为了让您从 NavigationView
获得 Header
,您必须调用 getHeaderView(int index)
例如:
View headerView = navigationView.getHeaderView(0);
textView_nname = (TextView)headerView.findViewById(R.id.textView_nname);
// set whatever you like on the textView.
我在抽屉式布局中有一个 NavigationView,其中包含一个 HeaderView 后跟一个菜单(如 AndroidStudio 的 Navigation Drawer Activity 模板中所给)。我的 Header 在 LinearLayout 中包含一个图像和几个 TextView。我想从 SharedPreferences 编辑 header 中的一个 TextView。我使用以下函数来做到这一点
public void navUpdate()
{
navigationView=(NavigationView)findViewById(R.id.nav_view);
linearLayout=(LinearLayout) LayoutInflater.from(this).inflate(R.layout.nav_header_main, null);
textView_nname=(TextView)linearLayout.findViewById(R.id.textView_nname);
String name=sharedPreferences.getString("name","Your Name");
textView_nname.setText(name);
navigationView.removeHeaderView(linearLayout);
navigationView.addHeaderView(linearLayout);
}
问题是,虽然我添加了行
navigationView.removeHeaderView(linearLayout);
我以前的 header 视图在新视图上方仍然可见。并且上一个没有更新。我在许多答案中读到了 navigationview.getHeaderAt() 方法,但相信我,该方法不可用。
这个问题有解决办法吗,如果没有,还有其他办法吗?
为了让您从 NavigationView
获得 Header
,您必须调用 getHeaderView(int index)
例如:
View headerView = navigationView.getHeaderView(0);
textView_nname = (TextView)headerView.findViewById(R.id.textView_nname);
// set whatever you like on the textView.