对于我的学士论文,我想实现一个Android应用程序。出于测试目的,我创建了一个tablelayout。行和包含单元格取决于用户输入。为了获得tablelayout的一些经验,我以编程方式创建了一个包含7个单元格的tablelayout:第一行是标题单元格,每个单元格都有colspan = 2.
现在,我逐步删除第二行(从右到左)的单元格。 一切都好。我再次删除了第二行中的一个单元格。查看图片:table with 5 cells。一切都好。但现在,当我重新编译或立即重新加载时,会发生这种情况:table with 5cells, but wrong。这里发生了什么事?我在代码中没有改变任何东西......发生了什么神奇的事情?!我在一个Android虚拟设备(api 17)中测试了这个解决方法。需要Api 17。对于具有api 25的虚拟设备,不会发生错误。
有人可以帮助我吗?
这是代码的一部分:
TableRow.LayoutParams params = new TableRow.LayoutParams();
params.span = 2;
params.weight = 1;
TableLayout table = new TableLayout(context);
TableRow row1 = new TableRow(context);
TableRow row2 = new TableRow(context);
TextView tv1 = new TextView(context);
tv1.setText("header");
tv1.setWidth(300);
tv1.setHeight(100);
tv1.setTextAlignment(View.TEXT_ALIGNMENT_CENTER);
tv1.setBackground(darkBackground);
tv1.setLayoutParams(params);
row1.addView(tv1);
TextView tv2 = new TextView(context);
tv2.setText("header");
tv2.setWidth(300);
tv2.setHeight(100);
tv2.setTextAlignment(View.TEXT_ALIGNMENT_CENTER);
tv2.setBackground(darkBackground);
tv2.setLayoutParams(params);
row1.addView(tv2);
答案 0 :(得分:1)
仅供参考:我找到了解决方案。这都是关于背景的。由于GradiantDrawable-Object的定义不正确,第二张图片中的背景(灰色)(具有5个字符但是错误的表格)(第一行,第一个单元格)不适合整个宽度。我忘了设置shape属性:
GradiantDrawable background = new GradiantDrawable();
background.setColor(Color.rgb(235,235,235));
background.setStroke(1, Color.rgb(0,0,0));
// don't forget to set the following attribute:
background.setShape(GradientDrawable.RECTANGLE);