【问题标题】:How to disable menu popup animation如何禁用菜单弹出动画
【发布时间】:2016-07-03 05:06:40
【问题描述】:

我使用以下代码创建菜单,当我点击按钮时,它显示弹出动画,如何禁用它?

    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();
        }
    });

【问题讨论】:

    标签: android user-interface animation styles popupmenu


    【解决方案1】:

    可以根据您的样式更改弹出动画:

    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="android:popupAnimationStyle">@null</item>
    </style>
    

    【讨论】:

      【解决方案2】:
      <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);
      

      使用这种方式,您无需更改整个活动的样式。例如,在我的情况下,弹出动画在华为设备上存在问题。所以我只需要为华为禁用动画。我就是这样做的:

      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);
      

      【讨论】:

        猜你喜欢
        • 2018-03-13
        • 1970-01-01
        • 2020-01-08
        • 2019-12-09
        • 1970-01-01
        • 2015-08-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多