这是一个用于将报告打印到色带打印机(即,纸张较窄的打印机)的Android应用。要正确格式化报告,我需要使用以下布局规则生成表格:
示例:
对于它的价值,我希望如果发生此类 溢出,它将出现在第1列或最后一列中(不太可能)。
该解决方案可以在WebView或Android View的屏幕外树中使用HTML + CSS。在这两种情况下,我所需要做的就是获取可发送到打印机的位图。 (我知道我可以使用WebView做到这一点,而且我相信我也可以使用Views树来做到这一点。)但是,我不相信HTML + CSS 或任何Android容器小部件提供了我正在寻找的布局和大小调整策略。有人知道吗?
答案 0 :(得分:1)
对于它的价值,我发现我可以使用屏幕外的Android小部件树来做到这一点。
解决方案的高级描述:
我从一个外部容器(例如,将LinearLayout
的方向设置为VERTICAL)开始,其外部子级最初都是水平的LinearLayout
,其中包含表的“单元格”,而这些单元格最初都是TextViews
。
我在外部容器上调用draw()
。这会将表格中的每个TextView
布置在其默认位置(即,作为外部容器中一行中的“单元格”。)在完成初始布局之后,我需要执行以下操作:
getLineCount()
。 getLineCount()
返回一个值> 1,那么我从其行中删除该TextView
并将其添加为外部容器的子级-即,使其自身占据一整行。我还在其原始行的旧位置填充了Space
,该宽度与TextView
原来的宽度相同。还需要调整TextView
的大小以填充其在容器中的行。TextView
,我将再次调用draw()
以将重新排列的表格绘制到Canvas
上,从中可以复制位图。我意识到这有点含糊。如果我有时间从解决方案中剥离任何专有代码,请在此处发布。