Android布局:创建一个2x3网格 - 试图避免使用权重嵌套LinearLayout

时间:2015-03-09 19:56:44

标签: android android-layout android-linearlayout

我需要创建一个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:更改布局以改为使用相对布局,现在以编程方式设置图像的高度和宽度。

0 个答案:

没有答案