Tag: 网格布局

根据宽度放置GridLayout的子项

我有一个GridLayout,他们的孩子有相同的固定大小。 我想让孩子们适应可用的宽度: 在一个例子中: || | @1 @2 @3 @4 | | @5 | 在另一个: | @1 @2 | | @3 @4 | | @5 | auto_fit像一个GridView与auto_fit启用。 (但我不能使用GridView的原因,请不要建议。) 为此,我想知道可用宽度后,计算列的数量并设置每个子的LayoutParams(即行列索引)。 现在,在父片段的onCreateView中,GridLayout的宽度还不可用。 所以我设置了numColumns ,添加孩子,让他们自动定位,然后我想重新定位孩子。 我发现的最合理的地方是在布局更改侦听器( gridLayout.addOnLayoutChangeListener )中执行此操作,因为此时GridLayout的宽度是可用的。 但是,当我改变孩子的布局参数,然后调用gridLayout.requestLayout (1)时,没有任何反应(即孩子仍然具有onCreateView之后的相同位置)。 我也试图在每个子setLayoutParams (2)上调用setLayoutParams ,但是会产生requestLayout从布局监听器被错误地调用的警告,而且这些子requestLayout仍然没有被重新定位。 这里的代码(在Kotlin,但我希望很可读): gridLayout.addOnLayoutChangeListener { v, left, top, right, bottom, oldLeft, oldTop, oldRight, oldBottom -> val width = […]