Android 视图将填充所有可用空间
我试图以编程方式使用Android 视图将填充所有可用空间,android,android-gridlayout,Android,Android Gridlayout,我试图以编程方式使用GridLayout 这是我的密码: GridLayout p = new GridLayout(this); p.setRowCount(20); p.setColumnCount(20); View c = new View(this); c.setBackgroundColor(this.getResources().getColor(R.color.darkbluetheme)); Spec specusata = an
GridLayout
这是我的密码:
GridLayout p = new GridLayout(this);
p.setRowCount(20);
p.setColumnCount(20);
View c = new View(this);
c.setBackgroundColor(this.getResources().getColor(R.color.darkbluetheme));
Spec specusata = android.support.v7.widget.GridLayout.spec(1,2);
Spec specusata2 = android.support.v7.widget.GridLayout.spec(1,2);
p.addView(c,new LayoutParams(specusata,specusata2));
setContentView(p);
以下是我得到的结果:
当我期待这样的事情时:
请问我做错了什么???
谢谢
编辑编辑编辑
即使我将视图的LayoutParams设置为WRAP_内容,也会发生这种情况:
GridLayout p = new GridLayout(this);
p.setRowCount(20);
p.setColumnCount(20);
View c = new View(DayActivity.this);
c.setBackgroundColor(this.getResources().getColor(R.color.darkbluetheme));
Spec specusata = android.support.v7.widget.GridLayout.spec(1);
Spec specusata2 = android.support.v7.widget.GridLayout.spec(1);
c.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
p.addView(c,new android.support.v7.widget.GridLayout.LayoutParams(specusata,specusata2));
setContentView(p);
IMHO:您的其他行和列为空,因此宽度为零。你剩下的空间都被那一个单元格填满了,占据了所有的空间
尝试添加更多具有其他颜色的子视图,然后您就会了解发生了什么。IMHO:您的其他行和列为空,因此宽度为零。你剩下的空间都被那一个单元格填满了,占据了所有的空间
尝试添加更多具有其他颜色的子视图,然后您将了解发生了什么。@Hardy嗨,Hardy,我不确定我是否了解。我想我在执行
p.addView(c,newlayoutparams(specusata,specusata2))
时设置了必要的布局参数。。。请你给我解释清楚一点好吗?谢谢LISAthis的意思是视图是全屏显示的。@Piyus Gupta谢谢Piyus,你能举个例子吗,我还是不明白……也许我很愚蠢……:-(谢谢!LISA@LisaAnne是的..我一定会帮你..为什么不?嘿,丽莎..你检查过这个例子吗?@Hardy嗨,Hardy,我不确定我是否理解。我想我在执行p.addView(c,new LayoutParams(specusata,specusata2))时设置了必要的布局参数
…请你给我解释清楚一点好吗?谢谢!LISAthis这意味着视图是全屏显示的。@Piyus Gupta谢谢Piyus,你能举个例子吗,我还是不明白…也许我很愚蠢…:-(谢谢!LISA@LisaAnne耶..我一定会帮你..为什么不..嘿,丽莎..你检查过这个例子了吗?谢谢雨果。这很有趣…我添加了另一个红色视图b.setBackgroundColor(Color.Red);specusata=android.support.v7.widget.GridLayout.spec(5);specusata2=android.support.v7.widget.GridLayout.spec(5);b.setlayoututparams(新的LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));p.addView(b,新的android.support.v7.widget.GridLayout.LayoutParams(specusata,specusata2));
现在我得到了一个全屏红色!!!:-(如果视图没有强制大小为大小的内容,则在与WRAP_内容一起使用时会出现异常行为,因为没有内容。强制最小大小,或者将某些包含内容的子视图放入其中。请记住:布局只与对齐有关,而与大小无关。您认为网格布局将获得大小均匀的行或列的假设是错误的。它只会强制t第2行第1列中的项目将与第1列第5行中的项目具有相同的左侧位置。谢谢Hugo。这很有趣……我添加了另一个红色视图b.setBackgroundColor(Color.Red);specusata=android.support.v7.widget.GridLayout.spec(5);specusata2=android.support.v7.widget.GridLayout.spec(5);b.setlayoututparams(新的LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));p.addView(b,新的android.support.v7.widget.GridLayout.LayoutParams(specusata,specusata2));
现在我得到了一个全屏红色!!!:-(如果视图没有强制大小为大小的内容,则在与WRAP_内容一起使用时会出现异常行为,因为没有内容。强制最小大小,或者将某些包含内容的子视图放入其中。请记住:布局只与对齐有关,而与大小无关。您认为网格布局将获得大小均匀的行或列的假设是错误的。它只会强制t第2行第1列中的项目将与第1列第5行中的项目具有相同的左侧位置。