【问题标题】:Dynamically change the size of cells and spacing in grid layout android在网格布局android中动态更改单元格的大小和间距
【发布时间】:2016-11-10 13:28:29
【问题描述】:

我在网格布局中有一个文本视图,我想根据文本视图的文本区域更改网格单元格的大小。如果字大小为 5,则将相应计算网格大小。我正在动态添加文本视图和网格。我使用下面的代码来计算这个文本区域,

        text[i].setText(String.valueOf(finallist.get(i)));
        text[i].measure(0, 0);
        int widths = text[i].getMeasuredWidth();
        params.width=widths;
        text[i].setLayoutParams(params);
        text[i].setTextSize(10);

其中 'params' 是 textview 的布局参数。当我运行这段代码时,我得到如下所示的输出。

无论 textview 大小如何,我都会在网格之间获得额外的空间。相反,如果可用,我希望网格布局占据该区域。我想要这样的输出,

我希望网格之间的间距相等。我怎样才能实现这个动态。我也在这里实现拖放。我是新来的。请帮忙。提前致谢。

【问题讨论】:

  • 无需使用网格布局和计算文本大小等......东西!只需使用芯片文本视图,谷歌就可以了,它会给你你想要的输出。你可以参考github.com/Plumillon/ChipView这个。
  • 我将 textview 放在 gridlayout 中。当我使用芯片文本视图时,网格会调整其大小吗? @Radhey
  • 我也在网格布局中实现拖放。 @Radhey
  • 先做一个demo项目,去掉你的gird view并设置chip text for sample PLUS在textview上执行拖放操作,因为你也可以得到文本的点击事件,根据我的意见不需要只需要文本数据即可使用网格视图。
  • 我们可以使用行跨度或列跨度或行规范@Radhey 进行的任何可能性

标签: android grid-layout


【解决方案1】:

使用StaggeredGridLayoutManager 而不是普通的GridLayout。交错网格布局管理器的一个很好的例子是here

一个 LayoutManager,它以交错的网格形式布置子级。它支持水平和垂直布局以及反向布局子项的能力。交错的网格很可能在布局的边缘有间隙。为了避免这些差距,StaggeredGridLayoutManager 可以独立偏移跨度或在跨度之间移动项目。您可以通过 setGapStrategy(int) 控制此行为。

希望对您有所帮助。干杯!

【讨论】:

  • 我有机会使用 rowspec 、 colspec 或 span 吗?我正在网格布局中实现拖放@aa_oo
  • @Anusha,我不确定。我从未使用过拖放网格布局。对不起。但我很确定你可以,因为它是 android! :p
【解决方案2】:

您可以使用GridLayout.Spec,因为它同时具有rowSpeccolumnSpec 属性。也可以尝试setAlignmentMode,因为它用于其容器的子级之间的所有对齐。

【讨论】:

猜你喜欢
  • 2016-07-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多