2013-02-07 20 views
5

我想dislay ShareActionProviderActionBar,但与自定义外观&的感觉。只有一个简单的共享图标没有边框,没有最常用的应用程序图标在右边。但提供最常用应用程序的弹出菜单。有没有简单的方法来执行它,而不执行自己的ShareActionProviderShareActionProvider带有一个图标 - 看起来简单的actionitem

回答

-1

好的,无论ActionBarSherlock先测试一下,看看你是否正确地创建了你的意图,ABS使用与通用选择器相同的代码,以便在执行此代码时查看你正在查找的应用程序是否显示。

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

所有这些应用程序的可处理纯文本会显示出来,如果Facebook,或任何你期望是不是有那么这些应用程序的不支持您已注册的类型(普通/文本ACTION_SEND意图)。 (Facebook的,但一分钟更多)

ABS有一个使用共享操作提供程序的示例,但它尝试发送照片,而不是文本消息(状态更新)您应该使用的设置是这样

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

这里是将用于匹配应用程序的,并从样品

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

一一列举出来的意图,但你希望它是

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

这应该给你在ABS上的相同列表,它在我使用上面的选择器显示的小测试存根中。

+4

我知道如何使用ABS创建ShareActionProvider。但问题在于改变其在ActionBar上的外观。删除边框并删除右边的图标 - 所以它看起来就像是一个简单的actionItem。但提供所有附加功能(历史记录 - 在下拉菜单中) – pcu

相关问题