sco*_*yab 15 android actionbarsherlock shareactionprovider
我正在尝试设置图标ShareActionProvider,需要一个纯白色而不是半透明的白色.
但是,在share_menu.xml和代码中设置不起作用.只是想知道是否有人在扩展ShareActionProvider之前已经解决了这个问题.(我正在使用actionbarsherlock)
@Override
public void onCreateOptionsMenu(final Menu menu, final MenuInflater inflater) {
inflater.inflate(R.menu.share_menu, menu);
MenuItem actionItem = menu.findItem(R.id.share_action_provider);
ShareActionProvider actionProvider = (ShareActionProvider) actionItem.getActionProvider();
actionProvider.setShareIntent(mShareIntent);
// re-setting the icon as it's not being picked up from the menu xml file
actionItem.setIcon(R.drawable.ic_action_share);
super.onCreateOptionsMenu(menu, inflater);
}
Run Code Online (Sandbox Code Playgroud)
share_menu.xml
<item android:id="@+id/share_action_provider"
android:showAsAction="ifRoom"
android:title="@string/share_with"
android:icon="@drawable/ic_action_share"
android:actionProviderClass="com.actionbarsherlock.widget.ShareActionProvider" />
Run Code Online (Sandbox Code Playgroud)
更新:也尝试在风格中设置它,但没有快乐
<style name="Theme.MyApp" parent="Theme.Sherlock.Light">
<item name="actionModeStyle">@style/ActionModeStyle</item>
<item name="android:actionModeStyle">@style/ActionModeStyle</item>
</style>
<style name="ActionModeStyle" parent="Widget.Sherlock.ActionMode">
<item name="actionModeShareDrawable">@drawable/ic_action_share</item>
</style>
Run Code Online (Sandbox Code Playgroud)
小智 17
当我想要自定义操作栏时,通常我看的第一个地方是ActionBarSherlock主题和样式.
我发现Sherlock主题使用了theme.xml文件中的"actionModeShareDrawable" .
尝试更改主题以直接包含"actionModeShareDrawable"项.
<style name="Theme.MyApp" parent="Theme.Sherlock.Light">
<item name="actionModeShareDrawable">@drawable/ic_action_share</item>
</style>
Run Code Online (Sandbox Code Playgroud)
对于AppCompat需要更改2种样式:
1)
<style name="MyAppTheme" parent="@style/Theme.AppCompat.Light.DarkActionBar">
<item name="actionBarWidgetTheme">@style/Theme.AppCompat.CustomShareIcon</item>
<item name="android:actionBarWidgetTheme">@style/Theme.AppCompat.CustomShareIcon</item>
</style>
Run Code Online (Sandbox Code Playgroud)
换句话说,attr:actionModeShareDrawable在你的指定MyAppTheme中并不是你真正需要的,但你应该在下面提到attr:actionBarWidgetTheme:
2)
<style name="Theme.AppCompat.CustomShareIcon" parent="@style/Theme.AppCompat">
<item name="actionModeShareDrawable">@drawable/abc_ic_menu_share_holo_dark</item> <!-- your icon goes here -->
</style>
Run Code Online (Sandbox Code Playgroud)
更新:忘记下面的TRICKY方式,只是子类ShareActionProvider,在onCreateActionViewMethod中返回null ,并在menu.xml文件中提供自己的图标,一切都会好的
===========================
我找到了一个非常棘手但没有ActionBarSherlock特定的方法:
子类ShareActionProvider,只需稍加调整:
@Override
public View onCreateActionView() {
View target = super.onCreateActionView();
ViewGroup viewGroup = (ViewGroup) LayoutInflater.from(context).inflate(R.layout.actionbutton_share, null);
ImageView overlay = (ImageView) viewGroup.findViewById(R.id.overlay);
ViewGroup container = (ViewGroup) viewGroup.findViewById(R.id.container);
container.addView(target);
container.getLayoutParams().width = overlay.getLayoutParams().width;
container.getLayoutParams().height = overlay.getLayoutParams().height;
return viewGroup;
}
Run Code Online (Sandbox Code Playgroud)创建一个布局文件(R.layout.actionbutton_share),它将原始视图放在顶部但对用户透明(注意"android:alpha = 0"部分):
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:orientation="vertical" >
<FrameLayout
android:id="@+id/container"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:alpha="0" />
<ImageView
android:id="@+id/overlay"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:layout_marginLeft="7dp"
android:layout_marginRight="7dp"
android:src="@drawable/yours_whatever_share_icon"
tools:ignore="ContentDescription" />
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)在menu.xml文件中使用被黑客攻击的ShareActionProvider
| 归档时间: |
|
| 查看次数: |
8835 次 |
| 最近记录: |