2015-06-25 16 views

risposta

17

ho scoperto una soluzione che utilizza la classe di Picasso Target e non richiede una barra d'azione personalizzato.

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) 
      { 
      } 
     }); 
+0

Questo è elegante! Non ho mai saputo che potevi farlo. Grazie! –

+0

@MatterCat Heh, probabilmente andrò con la tua soluzione dato che ho anche altre cose da cambiare nella barra delle azioni. :) – manabreak

2

Si carica l'immagine come si farebbe con qualsiasi altra immagine Picasso, ma un passaggio in più consiste nell'aggiungere una barra azioni personalizzata. Qualcosa di simile:

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

e poi

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