我使用以下代码来显示一个小弹窗:
public static PopupWindow showImportMenu(Activity activity, View anchor, PopupWindowClickListener onClickListener)
{
LayoutInflater inflater = LayoutInflater.from(activity);
PopupImportBinding binding = DataBindingUtil.inflate(inflater, R.layout.popup_import, null, false);
if (!RootTools.isRootAvailable())
binding.llImportRootMethod.setVisibility(View.GONE);
PopupWindow popupWindow = new PopupWindow(activity, null, R.attr.popupMenuStyle);
popupWindow.setFocusable(true);
popupWindow.setContentView(binding.getRoot());
popupWindow.setOutsideTouchable(true);
PopupWindowCompat.showAsDropDown(popupWindow, anchor, 0, 0, Gravity.BOTTOM);
View.OnClickListener clickListener = new View.OnClickListener()
{
@Override
public void onClick(View view)
{
onClickListener.onClick(popupWindow, view);
}
};
binding.llImportDefault.setOnClickListener(clickListener);
binding.llImportRootMethod.setOnClickListener(clickListener);
binding.llImportHTCFromContacts.setOnClickListener(clickListener);
binding.llImportManual.setOnClickListener(clickListener);
return popupWindow;
}
这在很多设备上都可以工作,但在某些罕见的设备上不起作用,例如:
- 安卓 5.1.1 root slim rom
- 可能还有其他设备...到目前为止,我对其他设备并不了解
我得到的反馈是没有弹出窗口。有人知道为什么在上述设备上不起作用吗?我该怎么做才能在这个设备上使它也能工作?
编辑
似乎不清楚我想要的是以下内容:
- 使用
showAsDropDown
而不是showAtLocation
或类似的方法,我从未看到过使用showAtLocation
出现这个问题 - 我的解决方案在几乎所有设备上都可以工作,似乎是手机/rom特定的问题,也许它甚至可以作为设备中的一个 bug 解决 => 如果有人知道这样的 bug,请告诉我
- 我不想使用对话框(或其他任何东西)代替,这并不能回答我的问题。我目前使用的是
BottomSheet
,对我来说很好,但我仍然想知道问题是否可以解决并进行处理