4

我正在创建一个将动态创建 tableLayout 的 Fragment,但我遇到了问题,因为它没有被显示。有人能告诉我为什么它不显示吗?可以显示除表格之外的部分标签。

这是我的xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layout_fragment_bp_list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
android:gravity="top"
android:orientation="vertical" >

<TextView
        android:id="@+id/section_bp_label"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

<TableLayout
    android:id="@+id/tableLayoutBloodPressure"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >


</TableLayout>

</LinearLayout>

这是我的片段类-数据仅用于测试

public class BloodPressureFragment extends Fragment {

public BloodPressureFragment() {
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {

    View rootView = inflater.inflate(R.layout.fragment_bp_list, container,
            false);

    TextView txt = (TextView) rootView.findViewById(R.id.section_bp_label);
    txt.setText("Blood Pressure History Logs");

    TableLayout ll = (TableLayout) rootView
            .findViewById(R.id.tableLayoutBloodPressure);

    for (int i = 1; i < 10; i++) {
        TableRow tbrow = new TableRow(getActivity().getApplicationContext());
        tbrow.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,
                LayoutParams.WRAP_CONTENT));

        TextView tv1 = new TextView(getActivity().getApplicationContext());
        tv1.setLayoutParams(new TableRow.LayoutParams(
                TableRow.LayoutParams.MATCH_PARENT,
                TableRow.LayoutParams.WRAP_CONTENT));
        tv1.setId(i);

        tv1.setText("Test id: " + i);
        tbrow.addView(tv1);

        ll.addView(tbrow, new TableLayout.LayoutParams(
                LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
    }

    return rootView;
}
}
4

2 回答 2

1

我有同样的问题,我的解决方案是从片段视图膨胀行布局。

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
    v = inflater.inflate(R.layout.fragment_intro_a,container,false); // infalte normally
    Tablelayout mytable = (TableLayout) v.findViewById(R.id.mytable); // init table

    /* your stuff*/

    /* now fill table layout directly on fragment */
    TableRow row = new TableRow(getActivity()); // new row
    View table_row_view = v.inflate(getActivity(),R.layout.your_layout,row); // inflate from parent view;
    row.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT));
    TextView mytextview = (TextView)vvv.findViewById(R.id.yourtextview-in-yourlayout);
    mytable.addView(row, new TableLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT));
    /* TADAAN! rows is visible! */

}

于 2015-09-20T14:20:51.303 回答
0

而不是这种等级制度

[表格布局<表格行<文本视图]

尝试将textview直接添加到tablelayout,避免使用 tablerows。

更新 这对我来说很好。创建一个 tableLayout,其中生成几个 tablerows,里面有一些 textviews。

    TableLayout tl;
    tl = (TableLayout) rootView.findViewById(R.id.fragment1_tlayout);

    for (int i = 0; i < 30; i++) {

        TableRow tr = new TableRow(getActivity());

        tr.setId(i);
        tr.setBackgroundResource(R.color.RoyalBlue);
        tr.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));

                    //TEXTVIEWS********
        TextView tv1 = new TextView(getActivity());
        tv1.setText("TEST NUMBER");
        tv1.setId(i);
        tv1.setTextColor(Color.WHITE);
        tv1.setTextSize(20);
        tv1.setPadding(5, 5, 5, 5);
        tr.addView(tv1);

        TextView tv2 = new TextView(getActivity());

        tv2.setText("nº: "+ i);
        tv2.setId(i+i);
        tv2.setTextColor(Color.WHITE);
        tv1.setTextSize(20);
        tv2.setPadding(5, 5, 5, 5);
        tr.addView(tv2);

        tl.addView(tr, new TableLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));

    }

XML:

<ScrollView
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:scrollbars="vertical" >

    <TableLayout
        android:id="@+id/fragment1_tlayout"
        android:background="@color/LightGreen"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:stretchColumns="0,1" >

    </TableLayout>
</ScrollView>
于 2014-05-15T11:51:44.663 回答