2

ImageView拡張機能で動的グリッドを作成しようとしています。Android 4.0.3では問題なく表示されますが、2.2では右側と下部が引き伸ばされるため、これらの端のセルは2倍の大きさに見えます。

グリッド作成コードは次のとおりです。

cellheight = Math.round((float) (Math.floor((height - (bordersize * 2) - (linesize * (numrows - 1))) / numrows)));
cellwidth = Math.round((float) (Math.floor((width - (bordersize * 2) - (linesize * (numcols - 1))) / numcols)));
height = bordersize * 2 + (linesize * (numrows - 1)) + cellheight * numrows;
width = bordersize * 2 + (linesize * (numcols - 1)) + cellwidth * numcols;

bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
canvas = new Canvas(bitmap);
setImageBitmap(bitmap);

canvas.drawRect(0, 0, width, height, cellpaint);
canvas.drawRect(0, 0, bordersize, height, borderpaint);
canvas.drawRect(0, 0, width, bordersize, borderpaint);
canvas.drawRect(0, height - bordersize, width, height, borderpaint);
canvas.drawRect(width - bordersize, 0, width, height, borderpaint);

for (int i = 1; i < numrows; ++i)
  canvas.drawRect(bordersize, bordersize + (i * cellheight) - (linesize / 2), width - bordersize, 
    bordersize + (i * cellheight) + (linesize / 2), linepaint);

for (int i = 1; i < numcols; ++i)
  canvas.drawRect(bordersize + (i * cellwidth) - (linesize / 2), bordersize, 
    bordersize + (i * cellwidth) + (linesize / 2), height - bordersize, linepaint);

高さと幅300、numrowsとnumcols 8、bordersize 8、linesize 3の場合、高さと幅を293に再計算し、正方形のグリッドを作成します。しかし、2.2では、そのグリッドは右側と下部で引き伸ばされ、境界線と線がセルの別の行/列のサイズにほぼ拡張されます。

ImageViewとラッピングLinearLayoutの両方でWRAP_CONTENTを試しました。setScaleType()のさまざまな値を試しました。setMaxHeight()とsetMaxWidth()を試しました。私が試したことは、2.2でのストレッチを妨げるものではないようです。

何か案は?

4

0 に答える 0