android – 更新材料导航抽屉头

前端之家收集整理的这篇文章主要介绍了android – 更新材料导航抽屉头前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用最近提供的Google支持库将导航抽屉添加到我的应用中.在导航抽屉的标题中,我定义了一个Circle ImageView来设置用户的个人资料照片,下面是他的名字.

所有这些信息首先由用户在应用程序的第一次启动时定义,因此当mainActivity启动时,图像和名称将加载到标头中.但我正在给用户提供在应用程序内修改这些内容的机会.如果用户转到配置文件frag,并选择新图像作为配置文件图片,或者如果他更改了名称,则此参数将不会在导航抽屉的标题中更新,直到应用程序关闭并再次加载.

这就是我在mainActivity中定义的方式:

  1. public class MainActivity extends AppCompatActivity implements DrawerLayout.DrawerListener {
  2.  
  3. private NavigationView navView;
  4.  
  5. @Override
  6. protected void onCreate(Bundle savedInstanceState) {
  7. super.onCreate(savedInstanceState);
  8. setContentView(R.layout.main);
  9.  
  10. ....
  11.  
  12. navView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
  13. @Override public boolean onNavigationItemSelected(MenuItem menuItem) {
  14. menuItem.setChecked(true);
  15. displayFragment(menuItem.getItemId());
  16. drawerLayout.closeDrawers();
  17. return true;
  18. }
  19. });
  20. }

没有必要实现DrawerLayout.DrawerListener,但是如上图所示,我已经完成了尝试实时更新标头.这些实现了下一个方法

  1. @Override
  2. public void onDrawerSlide(View drawerView,float slideOffset) {
  3. }
  4. @Override
  5. public void onDrawerOpened(View drawerView) {
  6. try {
  7. ContextWrapper cw = new ContextWrapper(getApplicationContext());
  8. File directory = cw.getDir("profile",Context.MODE_PRIVATE);
  9. File mypath = new File(directory,"thumbnail.png");
  10. Bitmap bitmap = BitmapFactory.decodeStream(new FileInputStream(mypath));
  11. thumbview.setImageBitmap(bitmap);
  12. username = mPreferences.getString("NAME",null);
  13. nameview.setText(username);
  14. } catch (FileNotFoundException e) {
  15. Log.e("LOAD_IMAGE",e.getMessage(),e);
  16. thumbview.setImageResource(R.drawable.default_thumbnail);
  17. }
  18. }
  19. @Override
  20. public void onDrawerClosed(View drawerView) {
  21. }
  22. @Override
  23. public void onDrawerStateChanged(int newState) {
  24. }

在onDrawerOpened()方法中,我使用了与onCreate中使用的相同的代码来加载配置文件pic和名称.这应该在每次打开抽屉时更新这些参数,但是没有这样做,在我关闭并重新打开应用程序之前仍然不更新标题.

解决方法

在onCreate中,我需要定义下一个代码,以便能够实时更新导航抽屉的标题
  1. public class MainActivity extends AppCompatActivity implements DrawerLayout.DrawerListener {
  2.  
  3. private DrawerLayout drawerLayout;
  4.  
  5. @Override
  6. protected void onCreate(Bundle savedInstanceState) {
  7. super.onCreate(savedInstanceState);
  8. setContentView(R.layout.main);
  9.  
  10. drawerLayout.setDrawerListener(this);
  11. ...

猜你在找的Android相关文章