2013-02-07 9 views
5

Ich möchte ShareActionProvider auf ActionBar, aber mit benutzerdefinierten Look & feel. Nur ein einfaches Share-Icon ohne Grenzen und ohne das meistgenutzte App-Icon rechts. Aber bietet ein Popup-Menü mit den meisten verwendeten Anwendungen. Gibt es einen einfachen Weg, es ohne eigene ShareActionProvider zu implementieren?ShareActionProvider mit einem Symbol - als einfaches Actionitem

Antwort

-1

OK also unabhängig von ActionBarSherlock zuerst testen, ob Sie Ihre Absicht richtig erstellen, verwendet ABS den gleichen Code wie die generische chooser tut so sehen, ob die App suchen Sie, wenn Sie diesen Code ausführen.

Intent I= new Intent(Intent.ACTION_SEND); 
I.setType("text/plain"); 
I.putExtra(android.content.Intent.EXTRA_TEXT, "My Test Text"); 

startActivity(Intent.createChooser(I,"Share using ...")); 

dieser App Alles, was Klartext behandeln wird sich zeigen, ob Facebook, oder was auch immer Sie erwarten sind, ist nicht da dann nicht diese App die ACTION_SEND Absichtserklärung für den Typ unterstützen Sie sich registriert haben (plain/text). (Facebook tut, aber mehr dazu in einer Minute)

ABS hat ein Beispiel für die Verwendung des Share-Action-Providers, aber es versucht, ein Foto, keine Textnachricht (Statusaktualisierung) das Setup, das Sie verwenden sollten, ist etwas wie diese

@Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate your menu. 
    getSupportMenuInflater().inflate(R.menu.share_action_provider, menu); 

// Set file with share history to the provider and set the share intent. 
MenuItem item = menu.findItem(R.id.menu_item_share_action_provider_action_bar); 
ShareActionProvider provider = (ShareActionProvider) item.getActionProvider(); 
       provider.setShareHistoryFileName(ShareActionProvider.DEFAULT_SHARE_HISTORY_FILE_NAME); 
// Note that you can set/change the intent any time, 
// say when the user has selected an image. 
provider.setShareIntent(createShareIntent()); 

return true 
} 

und hier ist es die Absicht, die App verwendet wird, entsprechen und sie von der Probe

private Intent createShareIntent() { 
     Intent shareIntent = new Intent(Intent.ACTION_SEND); 
     shareIntent.setType("image/plain"); 
     Uri uri = Uri.fromFile(getFileStreamPath("shared.png")); 
     shareIntent.putExtra(Intent.EXTRA_STREAM, uri); 
     shareIntent.putExtra(Intent.EXTRA_TITLE, "This is an android icon"); 
     return shareIntent; 
    } 

Liste, aber Sie wollen es

sein

Dies sollte Ihnen die gleiche Liste in ABS geben, wie es in dem kleinen Teststummel, den ich mit der Auswahl oben gezeigt habe.

+4

Ich weiß, wie Sie ShareActionProvider auch mit ABS erstellen. Aber die Frage war, das Erscheinungsbild von ActionBar zu ändern. Entfernen Sie die Rahmen und entfernen Sie das rechte Symbol - so wird es als einfaches ActionItem aussehen. Bietet jedoch alle zusätzlichen Funktionen (Historie - im Dropdown) – pcu

Verwandte Themen