【问题标题】:Initiation of Android TextView will not work first time, dimensions are zero. What is the secret trick?第一次启动 Android TextView 将不起作用,尺寸为零。秘诀是什么?
【发布时间】:2010-10-26 07:32:47
【问题描述】:

我已将 View 膨胀到 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={} DEBUG/View(207): frame={0, 0, 0, 0} scroll={0, 0} mText="要显示的文本.."

触发弹出窗口的其余时间(通过用户按下地图图标)视图具有非零参数,然后行数可以正常工作:

DEBUG/View(207):frame={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="text to display.."

作为一种解决方法,我尝试在绘制第一个弹出窗口之前绘制一个不可见的 PopupWindow,即尝试“第一次”使用它。这没有帮助..我还试图使 MapView 无效。

谁能建议如何正确启动视图,以便我可以按应有的方式使用 getLineCount() ?

谢谢! 万尼亚

【问题讨论】:

    标签: android textview line-count


    【解决方案1】:

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

    How to adjust text font size to fit textview

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

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

    【讨论】:

    • 您好,感谢您的建议!其实我以前也有过这样的方法。起初它工作了一段时间,然后我遇到了与上面相同的问题(出于某种原因)。某些 View 元素未启动,因此 measureText() 返回 0。无论如何,我改变了我的方法,从调整文本以适应一行来调整弹出窗口的大小。最多3行。 //万尼亚
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-31
    • 1970-01-01
    • 2022-01-16
    • 2010-10-05
    • 1970-01-01
    • 2021-08-14
    相关资源
    最近更新 更多