使用 ShareActionProvider-v7 的 ActionBar 上的 ShareAction 图标大小问题
Size of ShareAction icon issue on ActionBar with ShareActionProvider-v7
我在我的 ActionBar
上解决我的旧 ShareAction
,自从我在 SDK Manager
上更新我的包后它就开始工作了。我从 Google 中看到 this 文档说,
To add a "share" action to your activity, put a ShareActionProvider
in
the app bar's menu resource. For example:
我添加了相同的内容但没有添加任何内容 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
跟下面code.you可以看到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 文档说,
You do not need to specify an icon, since the ShareActionProvider
widget takes care of its own appearance and behavior. However, you do
need to specify a title with android:title, in case the action ends up
in the overflow menu.
这是我到目前为止所做的:
@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"
,它与我之前的 method/trick 一起使用。但是,请查看来自 AndroidStudio
的预览:
这里是编译后的:
没有改变!
所以,我的问题是:这是错误还是我做错了什么?
Intent.createChooser
也不起作用:来自:
编辑:
最有趣的部分,我刚刚在接下来的课程和他们称之为应用程序的 Google 中看到了相同的设计和相同的结果阳光应用:
课程:
https://www.udacity.com//course/viewer#!/c-ud855/l-3961788738/m-4294896397
实用地更改图标
@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;
}
或主题
<item name="actionModeShareDrawable">@drawable/ic_share</item>
material 设计中的图标是 24dp x 24dp,正如 SearchView
所反映的那样。但是,ShareActionProvider
尚未默认更新为 material 设计。
您可以在您的主题中设置actionModeShareDrawable
来设置ShareActionProvider
中的分享图标:
<item name="actionModeShareDrawable">@drawable/share_icon</item>
请注意 ShareActionProvider
在 material 设计指南中的任何地方都找不到 Android M 的直接共享功能(此时需要您使用标准共享意图),目前尚不清楚 ShareActionProvider
是否不再是建议的模式。
有关更多详细信息,请访问此处。
如果您不需要共享菜单项的自定义图标,请尝试 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
好的,正如 的 ianhanniballake 所说,
Icons in material design are 24dp
x 24dp
, as properly reflected by the
SearchView
. However, ShareActionProvider
has not yet been updated to
material design by default.
顺便说一下,我刚刚 post 编辑了一个 question/report 到 code.google.com
,你可以在这里看到它:
http://code.google.com/p/android/issues/detail?id=200335
默认图标好像是 24dp
x 24dp
但应该是这样的:
但是现在,是这样的:
似乎是一个错误,仍在等待接受或回答有关 it.I 如果他们回答,我们会更新此 post。7 天过去了!
更新:
最后,他们已将缺陷分配给开发团队,他们将在可用时用更多信息更新此问题。
非常感谢 ssingamc...@google.com
在 Google 的支持。
这里有答案:http://code.google.com/p/android/issues/detail?id=200335#c10
如果有任何更新或修复可用,我将更新此答案。
更新: http://code.google.com/p/android/issues/detail?id=200335#c12
Hi, The development team has fixed the issue that you have reported
and it will be available in a future build. Thanks
我在我的 ActionBar
上解决我的旧 ShareAction
,自从我在 SDK Manager
上更新我的包后它就开始工作了。我从 Google 中看到 this 文档说,
To add a "share" action to your activity, put a
ShareActionProvider
in the app bar's menu resource. For example:
我添加了相同的内容但没有添加任何内容 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
跟下面code.you可以看到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 文档说,
You do not need to specify an icon, since the
ShareActionProvider
widget takes care of its own appearance and behavior. However, you do need to specify a title with android:title, in case the action ends up in the overflow menu.
这是我到目前为止所做的:
@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"
,它与我之前的 method/trick 一起使用。但是,请查看来自 AndroidStudio
的预览:
这里是编译后的:
没有改变!
所以,我的问题是:这是错误还是我做错了什么?
Intent.createChooser
也不起作用:来自:
编辑:
最有趣的部分,我刚刚在接下来的课程和他们称之为应用程序的 Google 中看到了相同的设计和相同的结果阳光应用:
课程:
https://www.udacity.com//course/viewer#!/c-ud855/l-3961788738/m-4294896397
实用地更改图标
@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;
}
或主题
<item name="actionModeShareDrawable">@drawable/ic_share</item>
material 设计中的图标是 24dp x 24dp,正如 SearchView
所反映的那样。但是,ShareActionProvider
尚未默认更新为 material 设计。
您可以在您的主题中设置actionModeShareDrawable
来设置ShareActionProvider
中的分享图标:
<item name="actionModeShareDrawable">@drawable/share_icon</item>
请注意 ShareActionProvider
在 material 设计指南中的任何地方都找不到 Android M 的直接共享功能(此时需要您使用标准共享意图),目前尚不清楚 ShareActionProvider
是否不再是建议的模式。
有关更多详细信息,请访问此处。
如果您不需要共享菜单项的自定义图标,请尝试 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
好的,正如
Icons in material design are
24dp
x24dp
, as properly reflected by theSearchView
. However,ShareActionProvider
has not yet been updated to material design by default.
顺便说一下,我刚刚 post 编辑了一个 question/report 到 code.google.com
,你可以在这里看到它:
http://code.google.com/p/android/issues/detail?id=200335
默认图标好像是 24dp
x 24dp
但应该是这样的:
但是现在,是这样的:
似乎是一个错误,仍在等待接受或回答有关 it.I 如果他们回答,我们会更新此 post。7 天过去了!
更新:
最后,他们已将缺陷分配给开发团队,他们将在可用时用更多信息更新此问题。
非常感谢 ssingamc...@google.com
在 Google 的支持。
这里有答案:http://code.google.com/p/android/issues/detail?id=200335#c10
如果有任何更新或修复可用,我将更新此答案。
更新: http://code.google.com/p/android/issues/detail?id=200335#c12
Hi, The development team has fixed the issue that you have reported and it will be available in a future build. Thanks