虽然这看起来很多重复的问题,但第一次对我而言。我搜索了所有结果,但无法得到结果,最后发布在这里。
我正在动态创建一个表,其中TableLayout
部分是用xml部分编写的。
<RelativeLayout
android:layout_width="70dp"
android:layout_height="40dp"
android:background="@color/colorPrimaryDark"
android:id="@+id/componentA">
<TableLayout
android:layout_width="match_parent"
android:layout_height="40dp"
android:gravity="center"
android:id="@+id/tl_componentA">
</TableLayout>
</RelativeLayout>
我为表格
创建了一个对象TableLayout tableLayoutA;
tableLayoutA= (TableLayout)view.findViewById(R.id.tl_componentA);
现在我尝试从此处动态添加一行
createTableRowColumn(tableLayoutA);
相关功能
private void createTableRowColumn(TableLayout tableLayout){
TableRow tableRow1= new TableRow(this.context);
tableRow1.setBackgroundColor(getResources().getColor(R.color.colorAccent));
setTableRowColumnProperty(tableRow1);
tableLayout.addView(tableRow1);
}
private void setTableRowColumnProperty(TableRow tableRow){
TableRow.LayoutParams layoutParams= new TableRow.LayoutParams(70, 40);
tableRow.setLayoutParams(layoutParams);
}
我做了这一切,并没有在emulater中显示我。但是当我用xml手动给出相同的结构时,事情就好了。
出于这个原因,我试图找出一些东西
Toast.makeText(getContext(), tableLayoutA.getHeight()+"", Toast.LENGTH_LONG).show();
在toast中它向我展示了0.我无法理解为什么,虽然我已经修复了xml本身中tableLayoutA的大小。
答案 0 :(得分:1)
现实生活中的一张桌子至少需要一行一列。 你没有看到表,因为你只创建了一行,但是没有列。
您需要在该行中添加一列以显示某些内容。
试试这个:
TextView label_date = new TextView(this);
label_date.setText("DATE");
label_date.setTextColor(Color.WHITE);
label_date.setPadding(5, 5, 5, 5);
tableRow.addView(label_date);// add the column to the table row here
tableLayout.addView(tableRow, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
您可以将textView替换为您想要的任何值。
tableLayout.addView(tableRow, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
在这里,你要说的是,在tableLayout中添加一个视图并告诉它是哪个视图,你还要说视图的宽度和高度应该包装它的内容。
另外,指定40,70不是一个好主意,当你有不同的屏幕尺寸时会发生什么。此外,使用库来处理动态视图添加和删除。您无需重新发明轮子并节省大量时间和精力。对于表格视图,https://github.com/EsotericSoftware/tablelayout可能是一个好的(不确定)。另一个问题是,表格查看您在寻找什么?请确保您没有将recyclerView误认为表格视图,我这样说是因为我不了解您的用例。
有用的链接:https://technotzz.wordpress.com/2011/11/04/android-dynamically-add-rows-to-table-layout/