好的,我花了几个小时弄清楚这里发生了什么。好吧,我没有找到在运行时设置 columnSpan 或 rowSpan 的任何工作方式。
但我找到了一个可行的解决方案(至少对我来说):
Java 代码
private LinearLayout addNewSpannedView(Integer resourceId, ViewGroup rootElement) {
return (LinearLayout) ((ViewGroup) getLayoutInflater().inflate(resourceId, rootElement, true)).getChildAt(rootElement.getChildCount() - 1);
}
// set columnSpan depending on some logic (gridLayout is the layout to add the view's to -> in my case these are LinearLayouts)
shape = addNewSpannedView(columnSpan == 1 ? R.layout.grid_ll_col_span_1 : R.layout.grid_ll_col_span_2, gridLayout);
grid_ll_col_span_2.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="@dimen/shapeWidth"
android:layout_height="wrap_content"
android:layout_columnSpan="2"/>
提示:在inflate() 将视图添加到根元素(即父元素)之前,设置宽度和高度属性非常重要。
我希望,有人可以使用这个;-)