2

我正在尝试使用 9-patch 作为 TextView 的背景,但它被视为普通图像文件。根据 9-Patch 工具和 Intellij IDEA Layout Preview,它应该可以正确拉伸。我也在使用其他 9 补丁,所以问题不可能是由于我的系统配置错误(例如在另一种情况下缺少库)。

到目前为止我所做的清单:

  • 确保 9-patch 周边仅包含完全透明或纯黑色像素。
  • 文件结尾是 *.9.png
  • 在图像中指定和不指定填充的情况下尝试过

是我想使用的图像。

刚才我看到 IDE 向我抛出这个“信息”:“错误:9-patch image ...\res\drawable\timeline.9.png 格式错误。9-patch 周边的行和列太多。”

我不知道的 9 补丁有什么限制吗?尝试搜索文档以获取有关此的更多信息,但没有成功。

提前谢谢,/我

PS:我知道可以通过删除段内的额外空间来优化图像,但仅此而已。一旦它按预期工作,我就计划这样做。

4

5 回答 5

2

使用 2 个水平标记,我可以使用 12 个垂直标记(再添加一个垂直或水平标记会产生该错误)。所以我认为它计算交叉点(H * V),根据其他答案,最大值可能是 25。


更新:

基于安卓代码:

// Make sure the amount of rows and columns will fit in the number of
// colors we can use in the 9-patch format.
if (numRows * numCols > 0x7F) {
    errorMsg = "Too many rows and columns in 9-patch perimeter";
    goto getout;
}

最大值为 0x7F = 127。

垂直标记被认为是一列,而水平标记是一排。因此,如果每个标记中有 5 个标记,则意味着您有5 个可拉伸列 + 6 个不可拉伸列(标记之间的区域),因此总共 11 个垂直列,水平相同,因此 11 * 11 = 121 小于 127 所以你很好

在我的情况下,我有 12 个垂直(12+13 =25)和 2 个水平(2+3 =5),所以 25*5=125 仍然小于 127。

于 2014-12-24T18:14:52.610 回答
1

您必须在 9-patch 上设置文本区域。在图片的底部和右侧定义它。

于 2012-06-28T11:11:46.743 回答
1

上次我检查:

最多可以使用 5 个填充标记。最多也可以使用 5 个缩放标记。

(更新:看起来有可能超过这个值。请参阅下面的附加评论。)

于 2012-09-17T23:09:12.767 回答
0

我在我的项目中测试了 18 个垂直标记和 6 个水平标记,返回了太多行和列的警告。然后我用了18个垂直标记和1个水平标记,很好:),我想不会超过20个。

于 2013-08-09T07:54:16.617 回答
0

我也达到了极限。针对 API 17 构建。我有一个网格,该网格在一天中的每个小时都有一列和 4 行。我玩了一下,我认为约束是补丁交叉点的数量。因此,如果我只有一个水平面片,我会在达到极限之前将其增加到大约 20 个垂直面片,但如果我有两个水平面片,我可能只能达到 10 个垂直面片。我尝试删除水平补丁,但随后出现错误“沿边缘未找到标记区域”。但是,如果我放弃调整高度并选择整个边缘作为水平面片,我可以添加所有 24 个垂直面片。我猜如果你让整个宽度或高度可调整大小,你可能会达到 40?只是基于我注意到的模式的有根据的猜测。

于 2013-08-15T15:55:59.373 回答