将视图添加到GridLayout中的特定行和列

时间:2017-11-04 23:31:04

标签: java android android-layout drag-and-drop android-gridlayout

我的最终目标是能够拖动视图并将其放入面向网格的布局(即限制将这些视图放置到单元格而不是任何地方的布局)。

我正试图用GridLayout做这件事,因为它似乎是合适的,但我现在怀疑是否有可能用我想做的事情。

处理丢弃时,我尝试将视图添加到GridLayout中:

            GridLayout.Spec row = GridLayout.spec(4);
            GridLayout.Spec column = GridLayout.spec(2);
            LayoutInflater inflater = LayoutInflater.from(gridLayout.getContext());
            gridLayout.addView(inflater.inflate(R.layout.my_view, null), new GridLayout.LayoutParams(row, column));

视图确实会添加到GridLayout,但不会添加到右侧单元格(对于上面的代码,它将是第5行,第3列的单元格)。

我该如何正确地做到这一点?我应该尝试除GridLayout之外的其他内容吗? GridLayout似乎是合适的,因为我也希望能够在其中放置不同大小的视图(即可以跨越更多或更少单元格的视图)。

谢谢。

修改 我正在考虑使用RelativeLayout并像这样添加视图:

RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(30, 40);
params.leftMargin = 50;
params.topMargin = 60;
relativeLayout.addView(myView, params);

这样,我可以指定视图的确切坐标(例如(50;60))。

1 个答案:

答案 0 :(得分:0)

我可以看到api不提供此功能,但是您可以执行以下操作:

您可以设置:

  

mGridLayout.setOrientation(GridLayout.HORIZONTAL);

  

mGridLayout.setOrientation(GridLayout.VERTICAL);

组织

  

mGridLayout.addView(view)

将子项添加到网格中。使用第一种方法(默认),子级首先由列填充,而第二个则由行填充