【问题标题】:mikepenz material drawer can not load url for drawer itemmikepenz 材料抽屉无法加载抽屉项目的 url
【发布时间】:2015-09-21 02:52:36
【问题描述】:

我也使用 mikepenz 材质抽屉,但我遇到了关于加载 URL 以更新抽屉项目图标的问题,但仍然失败。我无法解决它。 https://github.com/mikepenz/MaterialDrawer

请帮助我。谢谢

【问题讨论】:

    标签: android image url materialdrawer


    【解决方案1】:

    从最新版本的 MaterialDrawer 开始,现在建议使用 AbstractDrawerImageLoader 并覆盖特定方法。

    使用glide

    //initialize and create the image loader logic
    DrawerImageLoader.init(new AbstractDrawerImageLoader() {
            @Override
            public void set(ImageView imageView, Uri uri, Drawable placeholder) {
                Glide.with(imageView.getContext()).load(uri).placeholder(placeholder).into(imageView);
            }
    
            @Override
            public void cancel(ImageView imageView) {
                Glide.clear(imageView);
            }
    });
    

    picasso:

    //initialize and create the image loader logic
    DrawerImageLoader.init(new AbstractDrawerImageLoader() {
            @Override
            public void set(ImageView imageView, Uri uri, Drawable placeholder) {
                Picasso.with(imageView.getContext()).load(uri).placeholder(placeholder).into(imageView);
            }
    
            @Override
            public void cancel(ImageView imageView) {
                Picasso.with(imageView.getContext()).cancelRequest(imageView);
            }
    });
    

    您可以在MaterialDrawer 的 GitHub 存储库中找到完整的实现,包括有关如何为不同目标定义不同占位符的示例代码。 下面是CustomApplication的实现@

    【讨论】:

    • 您提到此代码应该在 Application 类中。那么,如果我想在运行时更改个人资料图片,它会起作用吗?
    • 此代码仅提供了 ImageLoader 将使用的逻辑(如 picasso 等),如果您更新配置文件,您可以执行此操作。
    • 谢谢。还有一个问题,我们如何检测 onClick on user profile imageView
    • AccountHeaderBuilder上定义一个withOnAccountHeaderProfileImageListener
    • 是的,这也很简单withSelectionListEnabledForSingleProfile(false)
    【解决方案2】:

    修复了这个问题。

    MaterialDrawer 支持从 URL 获取图像并将它们设置为配置文件图标。由于 MaterialDrawer 不包含 ImageLoading 库,因此开发人员可以选择自己的实现

    需要在你的应用类中实现这个方法。

    //initialize and create the image loader logic
    DrawerImageLoader.init(new DrawerImageLoader.IDrawerImageLoader() {
      @Override
      public void set(ImageView imageView, Uri uri, Drawable placeholder) {
        Picasso.with(imageView.getContext()).load(uri).placeholder(placeholder).into(imageView);
      }
    
      @Override
      public void cancel(ImageView imageView) {
        Picasso.with(imageView.getContext()).cancelRequest(imageView);
      }
    
      @Override
      public Drawable placeholder(Context ctx) {
        return null;
      }
    });
    

    玩得开心@.@

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-14
      • 1970-01-01
      • 2020-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多