如何使用LinearLayout子元素以编程方式在Gridlayout中设置Colspan?

时间:2014-07-09 10:36:16

标签: android android-linearlayout android-gridlayout

我目前正在尝试为我的Android应用程序创建一个类似于GUI的Windows 8开始菜单,显示可以触摸的不同块。为此,我使用GridLayout并继续在xml文件的for循环中添加子元素。到目前为止,一切正常。我的问题是,我实现了不同大小的瓷砖,这样就存在了普通(二次)和水平拉伸尺寸的两倍。这些较大的显示正确,但由于缺少colSpan,较大的瓷砖上方和下方都有一个白色间隙。

II II II II    II II II
II II II XXXXX II II II
II II II II    II

对不起,我还无法添加图片,但是在更大的瓷砖(XXXX)的上方和下方,还有可以用另一个瓷砖填充的空间,以使整个事情更好看:

II II II II II II II II
II II II XXXXX II II II
II II II II II

这是添加图块时的代码:

// GridLayout design
GridLayout gl = (GridLayout) findViewById(R.id.main_grid_layout);


// Kachel design
LinearLayout kachel = new LinearLayout(this);
kachel.setBackgroundResource(getBackgroundOfCategory(kategorieid));
kachel.setOrientation(LinearLayout.VERTICAL);

// Small and bigger kacheln
LinearLayout.LayoutParams kachelLP = new LinearLayout.LayoutParams(320,320);
if(size == 1) {
    kachelLP = new LinearLayout.LayoutParams(640,320);   
}

kachelLP.setMargins(10,10,10,10);
kachel.setLayoutParams(kachelLP);
kachel.setClickable(true);
// Kachel actions
kachel.setOnClickListener(new KachelOnClickListener(kachelid, getResources(), getBaseContext()));

...

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

您需要使用GridLayout&#39的LayoutParam的columnspec属性。或者你可以在xml中定义colspan(android:layout_columnSpan =" 2"),因为你的要求是静态的。

请在此处找到相同的内容。 http://developer.android.com/reference/android/widget/GridLayout.LayoutParams.html

这是一个相关的问题。 Set rowSpan or colSpan of a child of a GridLayout programmatically?

可在此处找到进一步的帮助。 http://android-developers.blogspot.in/2011/11/new-layout-widgets-space-and-gridlayout.html

希望这有帮助。