我想通过编写此代码来设置对齐列表项 -
ListItem alignJustifiedListItem =
new ListItem(bundle.getString(PrintKeys.AckProcess), normalFont8);
alignJustifiedListItem.setAlignment(Element.ALIGN_JUSTIFIED);
我发现这并没有对齐进行任何更改(默认为左对齐)。把它改成
alignJustifiedListItem.setAlignment(Element.ALIGN_JUSTIFIED_ALL);
实际上正在运行,但内容的最后一行也会扩展(如文档中所述)
我不明白ListItem
何时延伸Paragraph
,setAlignment()
行为如何变化。我也没有看到任何压倒一切。
答案 0 :(得分:1)
请查看ListAlignment示例。
在这个例子中,我创建了一个包含三个列表项的列表,我将其对齐设置为ALIGN_JUSTIFIED
:
List list = new List(List.UNORDERED);
ListItem item = new ListItem(text);
item.setAlignment(Element.ALIGN_JUSTIFIED);
list.add(item);
text = "a b c align ";
for (int i = 0; i < 5; i++) {
text = text + text;
}
item = new ListItem(text);
item.setAlignment(Element.ALIGN_JUSTIFIED);
list.add(item);
text = "supercalifragilisticexpialidocious ";
for (int i = 0; i < 3; i++) {
text = text + text;
}
item = new ListItem(text);
item.setAlignment(Element.ALIGN_JUSTIFIED);
list.add(item);
document.add(list);
如果查看结果,可以看到对齐按预期工作:
我故意介绍了一个很长的词,例如&#34; supercalifragilisticexpialidocious&#34;告诉你除了最后一行之外的所有行都是合理的。
<强>更新强>
在评论中,当您引入\
字符时,您声称对齐错误,并且您希望我修复iText。但是,没有什么可以解决的。
我已经改编了这样的原始示例:
text = "a b c align ";
for (int i = 0; i < 5; i++) {
text = text + "\\" + text;
}
item = new ListItem(text);
item.setAlignment(Element.ALIGN_JUSTIFIED);
list.add(item);
text = "supercalifragilisticexpialidocious ";
text = text + text;
text = text + text;
text = text + "\n" + text;
item = new ListItem(text);
item.setAlignment(Element.ALIGN_JUSTIFIED);
list.add(item);
在第一种情况下,我介绍了\
字符。这并没有改变ListItem
的行为。在第二种情况下,我介绍一个换行符。结果如预期:引入了换行符,并且每个&#34;段的最后一行都是#34;由换行符定义的确实没有道理。这是人们通常所期望的。如果我改变这个,我会介绍一个错误。
这是结果的屏幕截图:
在'\'
的行中引入"a b c align "
字符对对齐没有任何影响。在"supercalifragilisticexpialidocious "
部分中途引入换行符将列表项分为两部分。每个部分的最后一行都不合理,这是期望的行为。
如果您不想要此行为,则必须先解析内容并删除所有换行符(回车符和换行符)。
<强>更新强>
在新评论中,您提到'\'
字符作为'''
字符(实际上是\'
字符)的转义字符。我再次调整了原始示例:
text = "a b c\' align ";
for (int i = 0; i < 5; i++) {
text = text + text;
}
item = new ListItem(text);
item.setAlignment(Element.ALIGN_JUSTIFIED);
list.add(item);
结果如下:
文本是正确的。但是,我可以想象如果使用转义字符错误地处理String
s,可能会出现问题。在这种情况下,'\''
字符是硬编码的。如果从数据库中获取String
并且您错误地读取了String
,那么您可能会得到奇怪的结果。特别是在我作为PHP开发人员的日子里,我记得如果你没有注意的话,单个引用最终会像这个'\\\''
一样存储在数据库中的实例。