【发布时间】:2026-01-29 03:55:01
【问题描述】:
您好,目前我正在研究一个对一张图像进行切片和随机化的拼图。设置后,我手动将所有角的填充设置为 2,然后在拼图完成后,所有角的填充也应设置为 0,以完整显示图像。问题是发生了一件奇怪的事情,其中只有拼图的右侧完全移除了填充,而另一侧仍然在底部有填充。这只发生在规格较低的设备上。 (Nexus One 等)
这是我完成拼图后设置填充的代码:
if(true){
enable_puzzle = false;
for (int i=0; i < parent.getChildCount(); i++){
LinearLayout cont = (LinearLayout) parent.getChildAt(i);
for (int c = 0; c < cont.getChildCount(); c++){
View v = cont.getChildAt(c);
v.setClickable(false);
v.setPadding(0,0,0,0);
v.postInvalidate();
}
cont.postInvalidate(); //Tried this didn't work
}
parent.postInvalidate(); //Tried this didn't work
}
为了更好地理解我如何放置布局,它非常简单。我有一个线性布局,它在水平方向上保存图像视图,这些图像视图将以垂直方向放置到父容器中。
这是示例的屏幕截图。
关于创建的谜题(见左侧底部的奇数填充)
完成后:
这是我的 Nexus S 模拟器上的屏幕截图。在规格较低的真实设备上也会发生同样的情况。
更新:
检查后发现,主要原因是图像容器的宽度。由于我有一个 4x4 拼图并使用重量而不是固定尺寸,因此每个图像的宽度分布不均,导致 1px/dp 差异。现在唯一的问题是如何将父水平布局的宽度进行划分和四舍五入以获得每个图像视图的均匀结果?
【问题讨论】: