无法在Android中显示表格

时间:2014-10-06 17:57:01

标签: android android-tablelayout

我的长期目标是在Android应用中创建一个可点击的表,该表是从类对象列表动态制作的。我的短期目标是弄清楚如何获得一张桌子。现在我已经在设计视图中定义了一个TableLayout,并试图以动态/编程方式填充它。

代码:

XML文件:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context="com.example.nick.timelogger.itemTable"
android:background="#ffffffff">

    <TableLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_alignParentTop="true"
        android:layout_alignParentStart="true"
        android:id="@+id/itemTable">

    </TableLayout>
</RelativeLayout>

类 - OnCreate方法(现在我只是尝试添加一行以使其显示在我的应用上):

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_item_table);

    RelativeLayout.LayoutParams tableParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
    TableRow.LayoutParams rowParams = new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.WRAP_CONTENT);

    TableLayout itemTable = (TableLayout)findViewById(R.id.itemTable);
    itemTable.setLayoutParams(tableParams);

    TableRow header = new TableRow(getApplicationContext());
    header.setLayoutParams(tableParams);

    TextView itemName = new TextView(getApplicationContext());
    itemName.setText("Activity Name");
    itemName.setTextColor(Color.BLACK);
    itemName.setTextSize(16f);
    itemName.setTypeface(Typeface.DEFAULT);

    TextView status = new TextView(getApplicationContext());
    status.setText("Status");
    status.setTextColor(Color.BLACK);
    status.setTextSize(16f);
    status.setTypeface(Typeface.DEFAULT);;

    TextView elapsed = new TextView(getApplicationContext());
    elapsed.setText("Elapsed Time");
    elapsed.setTextColor(Color.BLACK);
    elapsed.setTextSize(16f);
    elapsed.setTypeface(Typeface.DEFAULT);

    header.addView(itemName,(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT)));
    header.addView(status,(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT)));
    header.addView(elapsed,(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT)));

    itemTable.addView(header);
}

我错过了什么?

1 个答案:

答案 0 :(得分:0)

我在代码中发现了两个问题:

1)首先,我为rowparams添加了tableparams 2)其次,我使用了另一种形式的'header.addView',取出第二个参数,这似乎有效。

似乎Android变化如此之快,以至于从旧的Stack答案中提取代码并不总是正常工作。