我能否使用Picasso将图片加载到操作栏?

12

我一直在广泛使用Picasso从互联网检索图像到我的应用程序。现在,我遇到了一个需要将小图像检索到操作栏(例如标题文本旁边的徽标)的情况。

是否可能使用Picasso实现这一点?如果是这样,我该如何做呢?

2个回答

22
我找到了一个解决方案,它使用Picasso的Target类,并且不需要自定义操作栏。

我找到了一个解决方案,它使用Picasso的Target类,并且不需要自定义操作栏。

final ActionBar ab = getSupportActionBar();
Picasso.with(this)
       .load(imageURL)
       .into(new Target()
       {
           @Override
           public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from)
           {
               Drawable d = new BitmapDrawable(getResources(), bitmap);
               ab.setIcon(d);
               ab.setDisplayShowHomeEnabled(true);
               ab.setDisplayHomeAsUpEnabled(true);
           }

           @Override
           public void onBitmapFailed(Drawable errorDrawable)
           {
           }

           @Override
           public void onPrepareLoad(Drawable placeHolderDrawable)
           {
           }
       });

太棒了!从来不知道你可以这样做。谢谢! - Matter Cat
@MatterCat 嘿,我可能还是会选择你的解决方案,因为我还有一些其他的操作栏需要更改。 :) - manabreak

2
您可以像加载其他Picasso图片一样加载图片,但还需要添加自定义操作栏。例如:

您可以像加载其他Picasso图片一样加载图片,但还需要添加自定义操作栏。例如:

    final View actionBarLayout = getLayoutInflater().inflate(R.layout.custom_action_bar, null);

    actionBar = getSupportActionBar();
    actionBar.setDisplayShowTitleEnabled(false);
    actionBar.setDisplayShowCustomEnabled(true);
    actionBar.setDisplayHomeAsUpEnabled(false);
    actionBar.setCustomView(actionBarLayout);

然后

 myIcon = (ImageView) actionBarLayout.findViewById(R.id.myIcon);
 Picasso.with(this).load("http://myimage.png").into(myIcon);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接