android - PopupWindow - 不适用于少数设备

标签 android popupwindow android-popupwindow

我使用以下代码显示一个小弹出窗口:

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

这适用于很多设备,但在一些罕见的设备上它不起作用,例如:

  • Android 5.1.1 root slim rom
  • 也许是其他人……直到现在,我对其他设备还不太了解

我收到没有显示弹出窗口的反馈。有谁知道为什么这在上述设备上不起作用?我能做些什么让它在这个设备上也能正常工作?

编辑

似乎不清楚我想要的是什么:

  • 使用 showAsDropDown 而不是 showAtLocation 或类似的,我从未见过 showAtLocation 的这个问题
  • 我的解决方案几乎适用于所有设备,这似乎是特定于电话/ROM 的问题,也许它甚至无法解决,因为它也可能是设备中的错误 => 如果有人知道这样的错误,告诉我也会没事的
  • 我不想改用对话框(或其他任何东西),这没有回答我的问题。我目前使用的 BottomSheet 对我来说很好,但我仍然想知道问题是否可以解决并以某种方式处理

最佳答案

我在运行 5.1.1 的 Nexus 7(不是 2012 年)上遇到了同样的问题。最后通过添加这一行来修复它:

popupWindow.setWindowLayoutMode(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);

关于android - PopupWindow - 不适用于少数设备,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43331748/

相关文章:

java - 如何在特定时间内自动启用/禁用推送通知

python - 关闭 Selenium 中的通用弹出窗口

javascript - 居中特殊的 Javascript 弹出窗口,如何?

android - 更改 xml 字符串数组中项目的字体颜色

android - 在 RecyclerView Adapter 布局项顶部显示 PopupWindow

android - 如何在 ViewPager 的 fragment 页面内单击按钮时弹出窗口?使用 Kotlin

android - 如何清除导航组件中的 fragment 堆栈?

android - 使用isbndb android提取书籍封面

javascript - 提交后弹出。显示加载窗口或请稍候

android - 自动停止在AudioRecord类中记录