由于工作需要,修改android源码中的图库。其中要用自定义的ActionBar换掉原有的ActionBar,而图库中又有一个ActionMode需要干掉(隐藏)!利用hierarchyviewer工具查看UI,同时debug图库,摸索了一下,得到一个结论:只需隐藏mContextView(ActionBarContextView类型)即可。利用反射实现,代码如下:
/**
* set whether ActionMode is isvisiable.
*
* @param actionMode
* @param isVisiable
*/
public void setActionBarContextViewGone(ActionMode actionMode, int isVisiable){
try {
Class<?> clazz = Class.forName("com.android.internal.view.StandaloneActionMode");
Field field = clazz.getDeclaredField("mContextView");
field.setAccessible(true);
View mContextView = (View)field.get(actionMode);
mContextView.setVisibility(isVisiable);
} catch (Exception e) {
e.printStackTrace();
}
}