【发布时间】:2016-09-01 17:03:36
【问题描述】:
我已经阅读了一些关于此的帖子,但无法找出问题所在。我正在尝试在设备屏幕上完全适合 2 列中的 6 个图块的 GridView,这样就不需要滚动。这是它的样子:
所以我尝试将每个图块的高度计算为屏幕大小减去操作栏高度减去垂直空间。这是我计算瓷砖高度的代码:
public static int getTileHeight(int numOfRows, int verticalSpacing, Context context) {
TypedValue tv = new TypedValue();
int actionBarHeight = 0;
if (context.getTheme().resolveAttribute(android.R.attr.actionBarSize, tv, true)) {
actionBarHeight = TypedValue.complexToDimensionPixelSize(tv.data, context.getResources().getDisplayMetrics());
}
DisplayMetrics displaymetrics = new DisplayMetrics();
((Activity) context).getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
int height = displaymetrics.heightPixels;
int px = Math.round((numOfRows - 1) * verticalSpacing * (context.getResources().getDisplayMetrics().xdpi / DisplayMetrics.DENSITY_DEFAULT));
return ((height - actionBarHeight - px) / numOfRows);
}
垂直间距由
检索 gridView.getVerticalSpacing()
然后在我的 GridViewAdapter 中,我在 getView 中设置每个图块的高度:
picture.getLayoutParams().height = getTileHeight(...);
其中图片是一个带有图片的 ImageView。
但是,GridView 的高度对于屏幕来说总是有点太大。我无法完美匹配屏幕高度。有什么我想念的想法吗?
【问题讨论】:
-
你能分享你的xml吗?
-
你总是正好有 6 个项目吗?如果是这样,也许
GridView不是最佳选择,您应该只使用一些LinearLayouts 而不是相等的layout_weights。