【问题标题】:Create a PDF after linear layout is done drawing线性布局绘制完成后创建 PDF
【发布时间】:2020-03-07 12:25:48
【问题描述】:

我正在尝试使用表格布局创建嵌套线性布局的 PDF。我的问题是我最初的尝试导致在没有完整视图的情况下绘制文件。

为了解决这个问题,我决定只在视图加载完成后写入文件,并尝试使用 ViewTreeObserver.globalOnLayoutListener 监听事件,但它从未被触发。所以我决定使用View.post(),它似乎也不起作用。 我已经等了 4 分钟,因为布局文件很大但监听器和后来的可运行对象从未被调用,因此可能需要一段时间才能绘制。我使用断点和 logcat 验证了事实。

我哪里错了?

【问题讨论】:

    标签: android android-linearlayout android-tablelayout fileoutputstream android-viewtreeobserver


    【解决方案1】:

    所以我想通了,并不是我在布局完成渲染之前调用了绘图,我只是想使用一个像素太多无法适应的 xxhdpi 屏幕在 A4 PostScript pt 大小的页面上绘图尺寸。为了解决这个问题,我使用px 值而不是dps 作为我的视图尺寸,并且我还将布局大小设置为与页面大小相同,以确保内容完美契合。

    我设法通过调用measure(width, height) 来更改布局的视图尺寸,以强制视图重新测量其自身及其受所提供尺寸约束的子项的大小,然后layout(left, top, right, bottom) 强制它呈现自身及其由传递的坐标创建的边界内的子级。

    最好的一点是度量和布局都是同步的,因此可以保证在您尝试对其进行任何操作之前视图已准备就绪。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-01
      • 1970-01-01
      相关资源
      最近更新 更多