有没有办法实现Popup Window的showAsDropDown
函数动画?例如,一种用这个下拉动画显示Dialog的方法吗?
我无法使用PopupWindow,因为当我通过EditText.setError();
设置错误时应用崩溃 - 这是已知问题,但仍未解决。
证明:Exception when try to setError() in an editText inside a Popup Window查看Kantesh的最后评论。
答案 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>
我希望这是你想要的,结果是这样的: