【问题标题】:PopupView not showing up?PopupView 不显示?
【发布时间】:2011-03-31 18:47:54
【问题描述】:

这是 XML(只是一个 web 视图):

<?xml version="1.0" encoding="utf-8"?>
<WebView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/couponView" android:layout_height="100dp" android:layout_width="100dp" />

和代码:

final View cView = getLayoutInflater().inflate(R.layout.couponlayout, null);
PopupWindow pw = new PopupWindow(cView);
pw.showAtLocation(findViewById(R.id.mainLayout), Gravity.CENTER, 100, 100);
pw.update();

这是在 button.onClick() 方法中。当我单击按钮时,应该发生的其余事情(按钮更改颜色、文本等),但 PopupWindow 不显示。我一直在梳理网络,但找不到任何修复方法。我做错了什么?

编辑:没有人知道发生了什么?我觉得这是一个普遍的问题。

【问题讨论】:

    标签: android popupwindow


    【解决方案1】:
    PopupWindow.setWindowLayoutMode(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
    

    注意:setWindowLayoutMode 已被弃用。使用 setHeight 和 setWidth。

    【讨论】:

    • +1 我试图找到一种方法来使用斯科特的答案,而不必使用静态高度/宽度值。这帮助很大!
    • 再想一想,如果您使用这种方法,popupwindows 的 getWidth() 和 getHeight() 方法返回 0。您可以改为从弹出窗口内的视图中获取宽度和高度,并将它们设置为弹出窗口的尺寸以模拟 wrap_content。像这样:popupWindow.setContentView(myView); popupWindow.setHeight(myView.getHeight()); popupWindow.setWidth(myView.getWidth());
    • setWindowLayoutMode 已被弃用。他们希望你从现在开始使用 setHeight 和 setWidth。
    • 此方法现已在 API 23 中弃用。developer.android.com/reference/android/widget/…, int)
    【解决方案2】:

    PopupWindow 的宽度和高度可能为 0,因为维度没有被初始化,这可以解释为什么你什么都看不到。您可以使用setHeightsetWidth 设置高度和宽度,或者使用构造函数PopupWindow(View contentView, int width, int height) 进行设置。

    查看 Android reference 了解更多信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-03-14
      • 1970-01-01
      • 1970-01-01
      • 2018-07-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多