我试图应用“脉冲”#39;动画,以关注我的工具栏中的菜单项;但是,如果隐藏了所有菜单项,我找不到将动画应用于溢出图标的方法。
使用this solution中的代码,我可以获取ActionMenuView,但它没有任何子项可以应用动画。
//amv.getChildCount() returns 0.
在我的片段中
@Override
public void onPrepareOptionsMenu(Menu menu) {
super.onPrepareOptionsMenu(menu);
Toolbar toolbar = getToolbar();
for (int i = 0; i < toolbar.getChildCount(); i++) {
View view = toolbar.getChildAt(i);
if(view.getClass().getSimpleName().equals("ActionMenuView")) {
ActionMenuView amv = (ActionMenuView) view;
for (int i1 = 0; i1 < amv.getChildCount(); i1++) {
amv.getChildAt(i1).startAnimation((AnimationUtils.loadAnimation(getContext(),R.anim.pulse)));
}
}
}
menu.xml文件
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:res="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/tutorial"
android:title="@string/tutorial"
res:showAsAction="never"
res:actionLayout="@layout/button_info_white"/>
<item
android:id="@+id/social_filter"
android:title="@string/social_filter"
res:showAsAction="never"
/>
</menu>
感谢您的协助。
答案 0 :(得分:2)
由于您的所有商品都没有展示,我认为您可以这样做:
@Override
public void onPrepareOptionsMenu(Menu menu) {
super.onPrepareOptionsMenu(menu);
Toolbar toolbar = getToolbar();
for (int i = 0; i < toolbar.getChildCount(); i++) {
View view = toolbar.getChildAt(i);
if (view.getClass().getSimpleName().equals("ActionMenuView")) {
view.startAnimation((AnimationUtils.loadAnimation(getContext(),R.anim.pulse)));
}
}
}
我做了一个非常基本的测试,当所有项目都隐藏(并且你只有溢出图标)时,它可以正常工作。
请进行额外的测试,看看你是否有任何副作用。