package org.qii.weiciyuan.support.lib;
import org.qii.weiciyuan.support.utils.ThemeUtility;
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.ShareActionProvider;
/**
* User: qii
* Date: 13-9-29
* issue: #150
* android:actionModeShareDrawalbe is not a public attribute, and ShareActionProvider don't have any
* method to modify icon too.
* so must override ShareActionProvider, find the first ImageView, set resource, this is just a
* workaround, a better solution is to
* write custom ActionProvider
*/
public class ModifiedIconShareActionProvider extends ShareActionProvider {
/**
* Creates a new instance.
*
* @param context Context for accessing resources.
*/
public ModifiedIconShareActionProvider(Context context) {
super(context);
}
@Override
public View onCreateActionView() {
View view = super.onCreateActionView();
setIcon((ViewGroup) view);
return view;
}
private int index = 0;
private void setIcon(ViewGroup viewGroup) {
if (index > 1) {
return;
}
for (int i = 0; i < viewGroup.getChildCount(); i++) {
View child = viewGroup.getChildAt(i);
if (child instanceof ViewGroup) {
setIcon((ViewGroup) child);
} else if (child instanceof ImageView) {
index++;
if (index == 1) {
ImageView iv = (ImageView) child;
iv.setImageResource(ThemeUtility.getActionBarShareItemIcon());
}
}
}
}
}