做app的时候,需要在侧滑栏修改用户名为登录时的用户名,没改之前是这样的:
我看了一下代码,发现是一个布局套了另一个布局,想这不简单么,跨布局获取到控件id然后改就可以了,于是用了以下代码:
LayoutInflater inflater = UserMainActivity.this.getLayoutInflater(); //先获取当前布局的填充器
View view= inflater.inflate(R.layout.nav_header_user_main, null); //通过填充器获取另外一个布局的对象
UsernameTextView = (TextView)view.findViewById(R.id.mainUsername);
UseridTextView = (TextView)view.findViewById(R.id.mainUserid);
然而。。。无事发生。。。。 不管我把这段代码插在哪里,都发现,成功获取到id,控件text也改了,界面上就是不给你改。。。。我能怎么样啊。。。我也很绝望。。。
此时。。我还以为这是个menu。。。改了一天。。。无事发生。。。。再查了一会,才发现这个侧滑菜单 是 Navigation!!!
于是我又找了一段代码:
NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);
View header = navigationView.inflateHeaderView(R.layout.nav_header_user_main);
TextView tv = (TextView) header.findViewById(R.id.mainUsername);
tv.setText("Mosil Studio");
奇迹发生了!成功改了值!
个鬼啦,两个header是什么意思!!!
原来。。。这是 Design Support Library 23.1.0 以前的方法。。。
现在用的是 Design Support Library 23.1.1 以後
代码改为:
if(navigationView.getHeaderCount() > 0) {
View header = navigationView.getHeaderView(0);
TextView un = (TextView) header.findViewById(R.id.mainUsername);
un.setText(username);
}
如此 就好了:
修改成功~~~