2013-02-07 8 views
5

Chcę odrzucić ShareActionProvider na ActionBar, ale z niestandardowym wyglądem czuję się w stylu: &. Tylko jedna prosta ikona udostępniania bez obramowań i bez większości używanych ikon aplikacji po prawej stronie. Ale zapewnienie menu podręcznego z najczęściej używanymi aplikacjami. Czy istnieje prosty sposób, aby to zrobić bez implementacji własnego ShareActionProvider?ShareActionProvider z jedną ikoną - wygląda jak zwykły actionitem

Odpowiedz

-1

OK, więc niezależnie od pierwszego wykonania testu ActionBarSherlock, aby sprawdzić, czy prawidłowo tworzysz swoje intencje, ABS używa tego samego kodu, co ogólny wybieracz, więc sprawdź, czy aplikacja, której szukasz, pokazuje się po wykonaniu tego kodu.

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

Wszystko to aplikacja, że ​​uchwyt zwykły tekst pojawi się, jeśli facebook lub cokolwiek oczekują tam nie ma wtedy te aplikacji nie obsługują intencję ACTION_SEND dla typu zarejestrowałeś (zwykły/tekstu). (Facebook robi, ale o tym za chwilę)

ABS ma próbkę do użycia dostawcy akcji akcji, ale próbuje wysłać zdjęcie, a nie wiadomość tekstową (aktualizacja statusu) konfiguracja, której powinieneś używać jest czymś jak to

@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 
} 

i tu jest intencją, które będą używane w celu dopasowania aplikacji i wymienić je z próbki

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

ale chcesz go mieć

private Intent createShareIntent() { 
     Intent I= new Intent(Intent.ACTION_SEND); 
     I.setType("text/plain"); 
     I.putExtra(android.content.Intent.EXTRA_SUBJECT, "TEST - Disregard"); 
     I.putExtra(android.content.Intent.EXTRA_TEXT, Uri.parse("http://noplace.com")); 
    } 

Powinno to dać ci taką samą listę w systemie ABS, jak w małym odcinku testu, który pokazałem wyżej.

+4

Wiem, jak utworzyć ShareActionProvider również z ABS. Ale pytanie dotyczyło zmiany jego wyglądu w ActionBar. Usuń ramki i usuń prawą ikonę - tak, aby wyglądała jak prosta actionItem. Ale zapewnia wszystkie dodatkowe funkcje (historia - w rozwijanym menu) – pcu

Powiązane problemy