android - 线性布局绘制完成后创建 PDF
问题描述
我正在尝试使用表格布局创建嵌套线性布局的 PDF。我的问题是我最初的尝试导致在没有完整视图的情况下绘制文件。
为了解决这个问题,我决定只在视图加载完成后写入文件,并尝试使用监听事件,ViewTreeObserver.globalOnLayoutListener
但它从未被唤起。所以我决定使用View.post()
它,它似乎也不起作用。我已经等了 4 分钟,认为可能需要一段时间才能绘制,因为布局文件很大,但是监听器和后来的可运行对象从未被调用过。我使用断点和 logcat 验证了事实。
我哪里错了?
解决方案
所以我想通了,并不是我在布局完成渲染之前调用了绘图,我只是想使用一个像素太多无法适应尺寸的 xxhdpi 屏幕在 A4 PostScript pt 大小的页面上绘图。为了解决这个问题,我使用px
values 而不是dp
s 作为我的视图尺寸,我还将布局大小设置为与页面相同的大小,以确保内容完美契合。
我设法通过调用来更改布局的视图尺寸,measure(width, height)
以强制视图重新测量其自身及其受提供尺寸约束的子项的大小,然后layout(left, top, right, bottom)
强制它在传递的坐标创建的边界内渲染自身及其子项.
最好的事情是测量和布局都是同步的,所以在你尝试对它做任何事情之前,你可以保证视图已经准备好。