【问题标题】:Android: Set popup window width same as achor view widthAndroid:设置弹出窗口宽度与锚视图宽度相同
【发布时间】:2021-03-20 12:11:28
【问题描述】:

我正在使用约束布局,其中我使用流排列了视图。
这些视图是动态添加的。

单击任何视图时,应打开一个弹出窗口,如下图所示:

我设法显示了弹出窗口,但它没有占用锚视图的完整宽度。这就是它现在的样子:

这是我的代码中的 sn-p,它显示了弹出窗口

anchorView.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED)
val width = anchorView.measuredWidth
val height = ViewGroup.LayoutParams.WRAP_CONTENT

val focusable = true
val popupWindow = PopupWindow(popupCardBinding.root, width, height, focusable)
popupWindow.showAsDropDown(anchorView)

如何让它的宽度和anchorView的宽度一样?

【问题讨论】:

    标签: android popupwindow


    【解决方案1】:

    我不确定您在哪里调用 measure 以获得锚视图,但请在绘制视图后尝试测量 - 如果您使用 measure,使用 UNSPECIFIED 并不总是返回正确的值太早了:

    anchorView.post {
      anchorView.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED)
      val width = anchorView.measuredWidth
      val height = ViewGroup.LayoutParams.WRAP_CONTENT
    
      val focusable = true
      val popupWindow = PopupWindow(popupCardBinding.root, width, height, focusable)
      popupWindow.showAsDropDown(anchorView)
    }
    

    如果它不起作用,请尝试显示更多关于如何以及何时创建 anchorView 的代码

    【讨论】:

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