【发布时间】:2015-06-19 20:18:55
【问题描述】:
我想更改操作栏中分享项的图标。
这是我的菜单文件:
<item
android:id="@+id/menu_item_share"
app:showAsAction="always"
android:title="@string/menu_share"
app:actionProviderClass="android.support.v7.widget.ShareActionProvider"
/>
<item>
我的活动扩展了 ActionBarActivity:
import android.support.v7.widget.ShareActionProvider;
private ShareActionProvider mShareActionProvider;
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater menuInflater = getMenuInflater();
menuInflater.inflate(R.menu.main_menu, menu);
// Locate MenuItem with ShareActionProvider
MenuItem item = menu.findItem(R.id.menu_item_share);
// Fetch and store ShareActionProvider
mShareActionProvider = (ShareActionProvider) MenuItemCompat.getActionProvider(item);
Intent shareIntent = new Intent(Intent.ACTION_SEND)
.putExtra(Intent.EXTRA_TEXT, "text")
.setType("text/plain");
mShareActionProvider.setShareIntent(shareIntent);
return true;
}
我尝试更改样式文件:
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light">
<item name="android:windowNoTitle">true</item>
<item name="windowActionBar">false</item>
<item name="android:windowFullscreen">true</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:actionBarWidgetTheme">@style/Theme.AppCompat.CustomShareIcon</item>
</style>
<!-- Custom Share Icon -->
<style name="Theme.AppCompat.CustomShareIcon" parent="@style/Theme.AppCompat">
<item name="android:actionModeShareDrawable">@drawable/share</item>
</style>
但是我得到了 android:actionModeShareDrawable 需要 API 级别 21,所以我将代码移到 v21/styles 但它仍然不起作用。
我还尝试创建自定义共享提供程序Setting a custom share icon on Actionbar ShareActionProvider without ActionBarSherlock,但我得到了 java.lang.ClassCastException。
【问题讨论】:
-
推荐我的Answer。喜欢就投票吧。
-
哦!抱歉,您无法使用给定的共享操作提供程序进行更改,因为它有自己的实现,您可以创建自己的操作,例如 Cusom Action Provider,并在点击事件时使用弹出菜单。
-
我不得不从 menu.xml 更改操作提供程序类并且它工作但现在它看起来很大,其他的比共享图标小。如果我让它像普通物品一样看起来不错..你有什么想法让它看起来很正常吗?
-
在图像视图中应用填充。
-
它没有用。所以我把它当作一个普通的菜单项,我添加了stackoverflow.com/questions/17167701/…
标签: android shareactionprovider