我已将视图膨胀为 PopupWindow。此视图包括一个 TextView,我想在运行时在其中放置文本。我需要计算 TextView 使用的行数以调整弹出窗口的大小。为此,我使用 TextView 的 getLineCount() 并在计算行数( myTextView.draw(canvas) )之前绘制 TextView。
但是,我第一次调用 PopupWindow 时 getLineCount() 返回字符数而不是行数(例如 42 而不是 2) 调试参数表明这是因为 TextView 未正确启动:
调试/视图(207):框架={0, 0, 0, 0} 滚动={0, 0} 调试/视图(207):mMeasureWidth=0 mMeasureHeight=0 调试/视图(207):privateFlags={} 调试/View(207): frame={0, 0, 0, 0} scroll={0, 0} mText="要显示的文本.."
触发弹出窗口的其余时间(通过用户按下地图图标)视图具有非零参数,然后行数可以正常工作:
调试/视图(207):框架={7、13、209、79} 滚动={0、0} 调试/视图(207):mMeasureWidth=202 mMeasureHeight=66 调试/视图(207):privateFlags={HAS_BOUNDS} DEBUG/View(207): frame={7, 13, 209, 79} scroll={0, 0} mText="要显示的文本.."
作为一种变通方法,我尝试在绘制第一个弹出窗口之前绘制一个不可见的 PopupWindow,即尝试“第一次”使用它。这没有帮助..我还试图使 MapView 无效,这也不起作用。
谁能建议如何正确启动视图,以便我可以按应有的方式使用 getLineCount() ?
谢谢!万尼亚