0

我已将视图膨胀为 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() ?

谢谢!万尼亚

4

1 回答 1

0

作为一种解决方法,我建议这个人的课程:

如何调整文本字体大小以适合 textview

我猜它使用 measureText() 可以很好地完成工作。

但是为什么这不起作用-我不知道,必须深入研究一下;)我的建议是,起初文本框真的很窄,并且一行中只允许一个字符(这就是为什么返回 42 而不是 2)。

于 2010-10-26T07:47:21.680 回答