我如何创建像PopupWindow showAsDropDown这样的动画?

时间:2015-08-06 19:55:43

标签: android

有没有办法实现Popup Window的showAsDropDown函数动画?例如,一种用这个下拉动画显示Dialog的方法吗?

我无法使用PopupWindow,因为当我通过EditText.setError();设置错误时应用崩溃 - 这是已知问题,但仍未解决。

证明:Exception when try to setError() in an editText inside a Popup Window查看Kantesh的最后评论。

1 个答案:

答案 0 :(得分:0)

您可以使用PopUp菜单,其实现如下:

public void showPopUp(final View view) {


    PopupMenu popup = new PopupMenu(this, view);
    MenuInflater inflater = popup.getMenuInflater();

    //Note that R.menu.option is a menu in the menu.xml
    inflater.inflate(R.menu.options, popup.getMenu());

    /* Force icons to show if you want to display icons
    Object menuHelper = null;
    Class[] argTypes;
    try {
        Field fMenuHelper = PopupMenu.class.getDeclaredField("mPopup");
        fMenuHelper.setAccessible(true);
        menuHelper = fMenuHelper.get(popup);
        argTypes = new Class[] { boolean.class };
        menuHelper.getClass().getDeclaredMethod("setForceShowIcon", argTypes).invoke(menuHelper, true);
    } catch (Exception e) {
        popup.show();
        return;
    }
    */
    popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
        @Override
        public boolean onMenuItemClick(MenuItem item) {
            switch (item.getItemId()) {
                case R.id.item1:
                    // do thing when item1 clicked
                    break;

                case R.id.item2:

                    // do thing when item2 licked                        break;

                default:
                    return false;
            }
            return false;
        }
    });

    popup.show();


} 

在Xml上你必须添加新菜单,如下所示:

在菜单文件夹中添加新的Xml文件调用它,然后在其中添加您希望它们出现的选项,例如我的是options.xml:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >

<item
    android:id="@+id/item1"
    android:showAsAction="ifRoom|withText"
    android:title="item1"
    android:visible="true"/>

<item
    android:id="@+id/item2"
    android:showAsAction="ifRoom|withText"
    android:title="item2"
    android:visible="true"/>

</menu>

我希望这是你想要的,结果是这样的:

enter image description here