如何禁用菜单弹出动画
How to disable menu popup animation
我用下面的代码创建菜单,当我点击按钮时,它显示弹出动画,如何禁用它?
setContentView(R.layout.activity_test_create_menu_in_code);
View b = findViewById(R.id.b);
final PopupMenu m = new PopupMenu(this, b);
m.getMenu().add(0, 1, 0, "Create");
b.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
m.show();
}
});
可以根据您的风格更改弹出动画:
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="android:popupAnimationStyle">@null</item>
</style>
<style name="NoPopupAnimation" parent="Widget.AppCompat.PopupMenu">
<item name="android:popupAnimationStyle">@null</item>
</style>
并且:
Context wrapper = new ContextThemeWrapper(this, R.style.NoPopupAnimation);
PopupMenu popup = new PopupMenu(wrapper, view, Gravity.END);
使用这种方式你不需要改变整个样式activity。例如,在我的案例中,Popup 动画在华为设备上存在问题。所以我只需要为华为禁用动画。我是这样做的:
Context wrapper = this;
if ("huawei".equalsIgnoreCase(android.os.Build.MANUFACTURER)) {
wrapper = new ContextThemeWrapper(context, R.style.NoPopupAnimation);
}
PopupMenu popup = new PopupMenu(wrapper, view, Gravity.END);
我用下面的代码创建菜单,当我点击按钮时,它显示弹出动画,如何禁用它?
setContentView(R.layout.activity_test_create_menu_in_code);
View b = findViewById(R.id.b);
final PopupMenu m = new PopupMenu(this, b);
m.getMenu().add(0, 1, 0, "Create");
b.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
m.show();
}
});
可以根据您的风格更改弹出动画:
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="android:popupAnimationStyle">@null</item>
</style>
<style name="NoPopupAnimation" parent="Widget.AppCompat.PopupMenu">
<item name="android:popupAnimationStyle">@null</item>
</style>
并且:
Context wrapper = new ContextThemeWrapper(this, R.style.NoPopupAnimation);
PopupMenu popup = new PopupMenu(wrapper, view, Gravity.END);
使用这种方式你不需要改变整个样式activity。例如,在我的案例中,Popup 动画在华为设备上存在问题。所以我只需要为华为禁用动画。我是这样做的:
Context wrapper = this;
if ("huawei".equalsIgnoreCase(android.os.Build.MANUFACTURER)) {
wrapper = new ContextThemeWrapper(context, R.style.NoPopupAnimation);
}
PopupMenu popup = new PopupMenu(wrapper, view, Gravity.END);