首页 > 解决方案 > 线性布局绘制完成后创建 PDF

问题描述

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

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

我哪里错了?

标签: androidandroid-linearlayoutandroid-tablelayoutfileoutputstreamandroid-viewtreeobserver

解决方案


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

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

最好的事情是测量和布局都是同步的,所以在你尝试对它做任何事情之前,你可以保证视图已经准备好。


推荐阅读