MaterialDrawer:选择突出显示&在项目点击侦听器上的帐户标题

时间:2016-01-20 05:55:37

标签: android materialdrawer

此问题非常具体针对https://github.com/mikepenz/MaterialDrawer自定义。

我需要自定义我的帐户标题,如下所示:

  1. 任何时候都只会有一个帐户
  2. 点击标题(整个区域)应该给我DrawerClickListener#onItemClick callback
  3. 我设法通过重定向配置文件列表监听器来获取DrawerClickListener#onItemClick回调。但是方向改变时标题选择丢失了。 [我已设置已保存的实例状态]。此外,onItemClick还提供了null IDrawerItem,因为它不是Adapter的一部分。

    我是否过于复杂或者PrimaryDrawerItem本身可以扩展为类似于个人资料项目?

    1. 布局应该像带有额外字段的个人资料一样呈现
    2. 加载ImageHolder以更改为加载基于网址的图片

2 个答案:

答案 0 :(得分:1)

您的问题分为多个问题。让我先谈谈第一个问题。

  
      
  1. 任何时候都只会有一个帐户
  2.   

如果您build AccountHeader,则可以只提供一个个人资料。构建标头后,您可以随时更新和修改此单个配置文件,只需调用:

即可
//create the profile
final IProfile profile = new ProfileDrawerItem().withName("Mike Penz").withEmail("mikepenz@gmail.com").withIcon("https://avatars3.githubusercontent.com/u/1476232?v=3&s=460").withIdentifier(100);
//build your drawer or do your logic
...
//modify the profile
profile.withName("new name");
//notify the header about the changed profile
headerResult.updateProfile(profile);
  
      
  1. 点击标题(整个区域)应该给我DrawerClickListener#onItemClick callback
  2.   

如果您点击AccountHeader中的某处,则会触发OnAccountHeaderSelectionViewClickListener

.withOnAccountHeaderSelectionViewClickListener(new AccountHeader.OnAccountHeaderSelectionViewClickListener() {
   @Override
   public boolean onClick(View view, IProfile profile) {
       return false;
   }
})
  
      
  1. 布局应该像带有额外字段的个人资料一样呈现
  2.   

请添加更多详细信息,因为问题似乎不明确。

  
      
  1. 加载ImageHolder以更改为加载基于网址的图片
  2.   

示例应用包含CustomDrawerItem,可通过网址加载图标:CustomUrlPrimaryDrawerItem

答案 1 :(得分:0)

抽屉Itemclick监听器

您必须在setupNavigation内部声明该方法。在导航页脚项中,声明

List<IDrawerItem> stockyItems = new ArrayList<>();

然后使用OnDrawerItemClickListener编写按钮

PrimaryDrawerItem primaryDrawerItem = new PrimaryDrawerItem()
            .withName("Settings")
            .withIcon(R.drawable.ic_settings)
            .withOnDrawerItemClickListener(new Drawer.OnDrawerItemClickListener() {
                @Override
                public boolean onItemClick(View view, int position, IDrawerItem drawerItem) {
                    Intent intent = new Intent(MainActivity.this, Settings.class);
                    startActivity(intent);
                    finish();
                    return true;
                }
            });

最后必须传递对象

stockyItems.add(primaryDrawerItem);

完成