我正在尝试创建一个完全适合任何屏幕尺寸的网格视图。当我阅读有关此主题的许多示例或 SO 答案时,我发现的唯一一件事是:将一些“dimensions.xml”文件放在每个值大小文件夹中,并让 gridview 调整列数和自动间距。问题是有时,间距太大,使结果非常难看。
我的问题是:如果我不想设置尺寸并想以像素精度管理 gridview 怎么办?任何例子都会受到欢迎。
为了清楚起见:例如,我想要 x 列,每列之间有 4 个像素的间隔,所以我需要为此计算更好的列大小并将其指定给 gridview。这个想法是呈现像谷歌游戏商店应用程序中的东西,每个设备上的网格元素之间总是有相同的空间(列调整为屏幕大小)。
编辑:这是我现在正在使用的代码......它来自 Romain Guy 的一个例子,他展示了如何显示网格视图。
// This listener is used to get the final width of the GridView and then calculate the
// number of columns and the width of each column. The width of each column is variable
// as the GridView has stretchMode=columnWidth. The column width is used to set the height
// of each view so we get nice square thumbnails.
mGridView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
if (mAdapter.getNumColumns() == 0) {
final int numColumns = (int) Math.floor((double) mGridView.getWidth() / (mImageThumbSize + mImageThumbSpacing));
if (numColumns > 0) {
final int columnWidth = mGridView.getWidth() / numColumns - mImageThumbSpacing;
mAdapter.setNumColumns(numColumns);
mAdapter.setItemHeight(columnWidth);
}
}
}
});
mImageThumbSize 和 mImageThumbSpacing 来自维度文件。我正在寻找的是一种根据屏幕大小自动计算最佳列数的方法。例如:低分辨率手机 2 列,手机 3 列,小平板 4,平板 5,大平板 6。主要问题是手机可以提供与平板相同的 gridview 尺寸,所以我不能依赖纯屏幕尺寸计算。