Dimensione dell'edizione di icona ShareAction su ActionBar con ShareActionProvider-v7

Stavo lavorando attorno alla mia vecchia ShareAction sul mio ActionBar e stavo lavorando da quando ho aggiornato i miei pacchetti su SDK Manager . Ho visto questo documento da Google che dice,

Per aggiungere un'azione "condivisione" alla tua attività, inserisci un ShareActionProvider nella risorsa del menu della barra delle applicazioni. Per esempio:

  • Nessun dispositivo Android trovato nell'unità
  • Android: creazione di due colonne in un linearlayout
  • Android 4.4.2 - java.lang.RuntimeException: esecuzione di interruzioni di attività che non vengono riprese
  • ViewPager + FragmentStatePagerAdapter + cambio di orientamento
  • Come get i dati inviati dal server utilizzando fcm se l'applicazione è in background?
  • Android ripaga il frammento di frammento
  • E ho aggiunto la stessa cosa senza aggiungere alcuna Icons :

     <item android:id="@+id/action_share" android:title="@string/share" app:showAsAction="ifRoom" app:actionProviderClass="android.support.v7.widget.ShareActionProvider"/> 

    Stavo usando:

     app:actionProviderClass="Mypackagename.ShareActionProvider" 

    Con un ShareActionProvider personalizzato con il seguente codice. Puoi vedere qui .

    Ho visto un hack o un trucco per farlo (con ShareActionProvider -v4) e tutto era buono poiché ho deciso di utilizzare android.support.v7.widget.ShareActionProvider .

    Quindi, ecco il mio codice attualmente:

     <item android:id="@+id/shareac" android:title="@string/share" app:actionProviderClass="android.support.v7.widget.ShareActionProvider" app:showAsAction="always" /> 

    Non ho usato l' Icon perché qui dice il doc,

    Non è necessario specificare un'icona , poiché il widget ShareActionProvider prende cura dell'aspetto e del suo comportmento. Tuttavia, è necessario specificare un titolo con android: titolo, nel caso in cui l'azione finisce nel menu di overflow.

    Ecco quello che ho fatto finora:

      @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.menu_main_details, menu); // Locate MenuItem with ShareActionProvider MenuItem item = menu.findItem(R.id.shareac); // Fetch and store ShareActionProvider mShareActionProvider = (ShareActionProvider) MenuItemCompat.getActionProvider(item); Intent shareIntent = new Intent(); shareIntent.setAction(Intent.ACTION_SEND); Bundle extra = getIntent().getExtras(); String title = extra.getString("title"); Bundle extraurl = getIntent().getExtras(); String url = extraurl.getString("url"); shareIntent.putExtra(Intent.EXTRA_TEXT, "Check this new project from something : " + title + url); shareIntent.setType("text/plain"); mShareActionProvider.setShareIntent(shareIntent); return true; } 

    Quindi, qui quello che vedo adesso in Android Studio 1.5.1 è,

    immettere qui la descrizione dell'immagine

    E se eseguire e compilare l'applicazione:

    immettere qui la descrizione dell'immagine

    Come potete vedere, la dimensione di ShareAction è troppo. (Viola la linea guida MaterialDesign che immagino).


    Ho dimenticato di dire, ho già provato android:icon="@mipmap/ic_share" che stava lavorando con il mio precedente metodo / trucco. Ma, controlla questa anteprima da AndroidStudio :

    immettere qui la descrizione dell'immagine

    E qui è dopo compilato:

    immettere qui la descrizione dell'immagine

    Niente è cambiato!

    Quindi, la mia domanda: è che un bug o che cosa sto facendo male qui?

    Intent.createChooser non funzionava anche: da: https://stackoverflow.com/a/34797718/4409113

    Edit:

    La parte più interessante, ho appena visto lo stesso design e gli stessi resutls da Google nel corso seguente e su quella app che l'hanno chiamata SunShine app:

    AppLink

    Corso:

    https://www.udacity.com//course/viewer#!/c-ud855/l-3961788738/m-4294896397

  • Aprire un DataPickerDialog su Click di EditText prende due clic
  • Correggere l'animation di un viewer circolare
  • Come puoi fare una copia di revisione di un'applicazione Android?
  • Perché il metodo getOAuthAccessToken spara sempre l'exception nel twitter4j api?
  • Richiesta del valore massimo di una colonna in SQLite Per Android
  • Invio di un messaggio a un gestore su un thread morto quando si ottiene una posizione da un IntentService
  • 4 Solutions collect form web for “Dimensione dell'edizione di icona ShareAction su ActionBar con ShareActionProvider-v7”

    Okay, come ha detto ianhanniballake in questo post ,

    Le icone di progettazione dei materiali sono 24dp x 24dp , come correttamente riflesso da SearchView . Tuttavia, per impostazione predefinita , ShareActionProvider non è ancora stato aggiornato al progetto di materiale.

    A proposito, ho appena inviato una domanda / rapporto a code.google.com che puoi vedere qui:

    http://code.google.com/p/android/issues/detail?id=200335

    Sembra che l'icona predefinita sia 24dp x 24dp ma dovrebbe essere così:

    immettere qui la descrizione dell'immagine

    Ma ora, è così:

    immettere qui la descrizione dell'immagine

    Sembra essere un bug e ancora in attesa di accettare o rispondere. Aggiornerò questo post se risposero.7 giorni passati!

    AGGIORNARE:

    Infine, hanno assegnato il difetto al team di sviluppo e aggiorneranno questo problema con ulteriori informazioni in quanto disponibili.

    Grande grazie a ssingamc...@google.com a Google per il supporto.

    La risposta è disponibile qui: http://code.google.com/p/android/issues/detail?id=200335#c10

    Aggiornerò questa risposta se sono disponibili aggiornamenti o correzioni.

    UPDATE: http://code.google.com/p/android/issues/detail?id=200335#c12

    Salve, il team di sviluppo ha risolto il problema che hai segnalato e sarà disponibile in un futuro build. Grazie

    Le icone di progettazione dei materiali sono 24dp x 24dp , come correttamente riflesso da SearchView . Tuttavia, per impostazione predefinita, ShareActionProvider non è ancora stato aggiornato al progetto di materiale.

    È ansible impostare actionModeShareDrawable nel tuo tema per impostare l'icona di condivisione in ShareActionProvider :

     <item name="actionModeShareDrawable">@drawable/share_icon</item> 

    Si noti che ShareActionProvider non si trova in nessun punto nelle linee guida di progettazione del materiale e con la capacità di Direct Share di Android M (che richiede di utilizzare un'intenzione di condivisione standard in questo momento), non è chiaro se il ShareActionProvider è un model consigliato.

    Per maggiori dettagli visita qui.

    L'icona di ShareActionProvider di AppCompat è troppo grande rispetto ad altre icone

    Modificare l'icona Pragmaticamente

     @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.menu_main_details, menu); // Locate MenuItem with ShareActionProvider MenuItem item = menu.findItem(R.id.shareac); // Fetch and store ShareActionProvider mShareActionProvider = (ShareActionProvider) MenuItemCompat.getActionProvider(item); Intent shareIntent = new Intent(); shareIntent.setAction(Intent.ACTION_SEND); Bundle extra = getIntent().getExtras(); String title = extra.getString("title"); Bundle extraurl = getIntent().getExtras(); String url = extraurl.getString("url"); shareIntent.putExtra(Intent.EXTRA_TEXT, "Check this new project from something : " + title + url); shareIntent.setType("text/plain"); mShareActionProvider.setShareIntent(shareIntent); //Here item.setIcon(getResources().getDrawable(R.drawable.ic_share)); return true; } 

    o tema

     <item name="actionModeShareDrawable">@drawable/ic_share</item> 

    Se non è necessaria l'icona personalizzata per la voce di menu di condivisione, prova la risorsa android per la condivisione menuitem come sotto:

      <item android:id="@+id/action_share" android:title="@string/share" app:showAsAction="ifRoom" android:icon="@android:drawable/ic_share" app:actionProviderClass="android.support.v7.widget.ShareActionProvider"/> 

    Vedi qui

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.