我需要创建一个2乘3的网格,其中所有的屏幕空间均匀分配 - 我知道使用权重嵌套线性布局是不好的做法,所以我正在寻找替代解决方案。
无论屏幕尺寸如何,我都需要均匀分割空间 - 每行3列,每行3列。
根据我的理解,GridView / GridLayout / TableLayout不会自动填充空间或将其均匀分配 - 那么有什么替代方案可以满足我的需求吗?
我知道您可以通过编程方式设置布局参数 - 这比使用带权重的嵌套LinearLayouts更好吗?
感谢您的帮助
编辑:要清楚,我打算显示六个图像,每行两个,三行。我只想平均划分屏幕空间 - 也就是说,有三行相同的高度,每行有两列相同的宽度。
EDIT2:这就是我现在所使用的,虽然如果有人有更好的推荐,我仍然感兴趣。我不确定这比使用嵌套的layout_weight值
更好在我的XML中,我使用layout_weight为3个LinearLayout容器加权,每个容器占用可用屏幕高度的1/3。 (XML有一个LinearLayout作为根元素)
每个容器作为两个图像作为子图像,我正在以编程方式设置宽度,如下所示:
//Get appropiate width
DisplayMetrics metrics = con.getResources().getDisplayMetrics();
int width = metrics.widthPixels / 2;
//Set gif views to correct width - half of screen size
teamViewGif1.setLayoutParams(new LinearLayout.LayoutParams(width,LinearLayout.LayoutParams.MATCH_PARENT));
teamViewGif2.setLayoutParams(new LinearLayout.LayoutParams(width,LinearLayout.LayoutParams.MATCH_PARENT));
teamViewGif3.setLayoutParams(new LinearLayout.LayoutParams(width,LinearLayout.LayoutParams.MATCH_PARENT));
teamViewGif4.setLayoutParams(new LinearLayout.LayoutParams(width,LinearLayout.LayoutParams.MATCH_PARENT));
teamViewGif5.setLayoutParams(new LinearLayout.LayoutParams(width,LinearLayout.LayoutParams.MATCH_PARENT));
teamViewGif6.setLayoutParams(new LinearLayout.LayoutParams(width,LinearLayout.LayoutParams.MATCH_PARENT));
同样,如果有人有更好的解决方案或建议,我仍然感兴趣
EDIT3:更改布局以改为使用相对布局,现在以编程方式设置图像的高度和宽度。