我正在尝试使用ShareActionProvider和android.support.v7共享一个简单的文本,在ActionBar中放置一个Share-button。我的应用程序必须使用最低API级别8。 问题:当我使用API 19(目标级别)模拟代码时,它工作正常,但是当我使用API-8设备进行模拟时,带有要共享的应用列表的弹出菜单仅显示应用的名称,没有它的图标。我尝试使用带有API-9的真实Android设备并遇到了同样的问题:没有图标。 这是我的代码:
菜单中的:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context="package.ActivityName" >
<item
android:id="@+id/menuitemShare"
android:orderInCategory="1"
android:title="@string/menu1"
android:icon="@drawable/ic_action_share"
app:showAsAction="ifRoom"
app:actionProviderClass="android.support.v7.widget.ShareActionProvider"
/>
</menu>
java活动中的:
public class ActivityName extends ActionBarActivity {
private ShareActionProvider mShareActionProvider;
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.bem_vindo2, menu);
MenuItem shareItem = menu.findItem(R.id.menuitemCompartilhar);
mShareActionProvider = (ShareActionProvider)
MenuItemCompat.getActionProvider(shareItem);
mShareActionProvider.setShareIntent(getDefaultIntent());
return super.onCreateOptionsMenu(menu);
}
private Intent getDefaultIntent() {
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_TEXT, "text to share");
return intent;
}
}
答案 0 :(得分:6)
您的菜单项显示在弹出列表中而不是下拉列表中。好吧,我想通知你,这不是你的编码错误。相反,它是android.support.v7,为低端设备制作这样的显示器,但在高端设备中工作正常。我很遗憾地说你无能为力。
但是如果你想在所有Android设备上为你的应用程序提供相同的下拉效果,你必须切换到ActionBarSherlock。它是一个很棒的开源库,可以为动作栏设计中的所有设备提供一致且无偏见的结果。
修改强> 虽然ActionBarSherlock非常棒,但它的更新已经停止。此外,从API级别21开始,ActionBarActivity现已弃用。对于帐户Android版本正在更新是很好的步伐,世界更喜欢移动应用程序的Material Design。 我想建议两个选择: