Android编程笔记 2——侧滑栏修改用户信息(修改Navigation里header的TextView / Navigation drawer 中取出 headerview)

做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);
 }

如此 就好了:
这里写图片描述

修改成功~~~

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值