下面列出了怎么用android.widget.ActionMenuView的API类实例代码及写法,或者点击链接到github查看源代码。
private static View findProperTarget(final View view) {
if (! (view instanceof Toolbar)) return view;
final ViewGroup group = (ViewGroup) view;
for (int i = 0; i < group.getChildCount(); i ++) {
final View child = group.getChildAt(i);
if (child instanceof ActionMenuView) return ((ActionMenuView) child).getChildAt(0); // ActionMenuItemView
}
return view;
}
private void processMenuView(ViewGroup viewGroup) {
for (int i = 0; i < viewGroup.getChildCount(); i++) {
View child = viewGroup.getChildAt(i);
try {
if (child instanceof ActionMenuView) {
processActionMenuView((ActionMenuView) child);
} else if (child instanceof android.support.v7.widget.ActionMenuView) {
processSupportActionMenuView((android.support.v7.widget.ActionMenuView) child);
}
} catch (NoClassDefFoundError e) {
// not a error com.android.support:appcompat-v7 is not used in project
}
}
}
@BindingAdapter("menu") public static void inflateMenu(final ActionMenuView amv, final @MenuRes int old_menu, final @MenuRes int new_menu) {
if (SDK_INT < LOLLIPOP) return;
if (new_menu == old_menu) return;
final Menu menu = amv.getMenu();
menu.clear();
new MenuInflater(amv.getContext()).inflate(new_menu, menu);
}
private void processSupportActionMenuView(android.support.v7.widget.ActionMenuView menuView) {
Menu menu = menuView.getMenu();
processMenu(menu);
}
@TargetApi(21)
private void processActionMenuView(ActionMenuView menuView) {
Menu menu = menuView.getMenu();
processMenu(menu);
}