我在我ShareAction
上的旧版ActionBar
上工作,因为我在SDK Manager
更新了我的套餐,所以它正在运行。我看到来自 Google 的this文档,其中说
要为您的活动添加“分享”操作,请输入
ShareActionProvider
应用栏的菜单资源。例如:
我添加了相同内容而未添加任何Icons
:
<item android:id="@+id/action_share"
android:title="@string/share"
app:showAsAction="ifRoom"
app:actionProviderClass="android.support.v7.widget.ShareActionProvider"/>
我正在使用:
app:actionProviderClass="Mypackagename.ShareActionProvider"
使用以下代码的自定义ShareActionProvider
。您可以看到它here。
我看到了一个黑客或技巧(使用ShareActionProvider
- v4)并且一切都很好,因为我决定使用android.support.v7.widget.ShareActionProvider
。
所以,这是我目前的代码:
<item
android:id="@+id/shareac"
android:title="@string/share"
app:actionProviderClass="android.support.v7.widget.ShareActionProvider"
app:showAsAction="always" />
我没有使用Icon
,因为文档说的是here,
您不需要指定图标 ,因为
ShareActionProvider
小部件负责自己的外观和行为。但是,你这样做 需要使用android:title指定标题,以防操作结束 在溢出菜单中。
以下是我迄今为止所做的事情:
@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;
}
所以,这就是我现在在Android Studio 1.5.1中看到的,是,
如果运行并编译应用程序:
如您所见,ShareAction
的大小过多。 (我猜这违反了MaterialDesign
指南。)
我忘了说,我已经尝试android:icon="@mipmap/ic_share"
,这与我以前的方法/技巧一起使用。但是,请从AndroidStudio
:
这是在编译之后:
没有改变!
所以,我的问题是:这是一个错误,或者我在这里做错了什么?
Intent.createChooser
也不起作用:来自:https://stackoverflow.com/a/34797718/4409113
修改:
最有趣的部分,我刚刚在以下课程中看到了来自 Google 的相同设计和相同的结果,以及他们称之为 SunShine 的应用程序em> app:
课程:
https://www.udacity.com//course/viewer#!/c-ud855/l-3961788738/m-4294896397
答案 0 :(得分:4)
好的,正如this post的ianhanniballake所说,
材料设计中的图标为
24dp
x24dp
,正如SearchView
。但是,ShareActionProvider
尚未更新为 默认情况下的材料设计。
顺便说一句,我刚刚向code.google.com
发布了一个问题/报告,您可以在此处查看:
<强> http://code.google.com/p/android/issues/detail?id=200335 强>
默认图标似乎是 24dp
x 24dp
,但它应该是这样的:
但现在,就像这样:
似乎是一个错误,仍然在等待接受或回答它。如果他们回答了7天,我将更新这篇文章!
<强>更新强>
最后,他们已将缺陷分配给开发团队,他们会在可用时提供更多信息来更新此问题。
非常感谢 Google 的ssingamc...@google.com
寻求支持。
答案可在此处找到:http://code.google.com/p/android/issues/detail?id=200335#c10
如果有任何更新或任何修正,我会更新此答案。
更新 http://code.google.com/p/android/issues/detail?id=200335#c12
嗨,开发团队已经修复了您报告的问题 它将在未来的版本中提供。感谢
答案 1 :(得分:3)
材料设计中的图标为24dp x 24dp,由SearchView
正确反映。但是,默认情况下,ShareActionProvider
尚未更新为材料设计。
您可以在主题中设置actionModeShareDrawable
以在ShareActionProvider
中设置共享图标:
<item name="actionModeShareDrawable">@drawable/share_icon</item>
请注意,在材料设计指南中没有找到ShareActionProvider
,并且在Android M的直接共享功能(此时要求您使用标准共享意图)中找不到ShareActionProvider
,目前尚不清楚<Style TargetType="TabControl" x:Key="TabControlStyle">
<Style.Resources>
<Style TargetType="TabItem">
</Style>
不再是建议模式。
详情请访问此处。
AppCompat ShareActionProvider icon is too big compared to other icons
答案 2 :(得分:1)
更改图标实用
stroke
或主题
@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;
}
答案 3 :(得分:0)
如果您不需要共享菜单项的自定义图标,请尝试使用android资源进行共享菜单项,如下所示:
<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"/>
请参阅here