片段内的TableLayout

时间:2013-06-25 04:57:26

标签: java android android-tablelayout

我正在创建一个动态创建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;
}
}

2 个答案:

答案 0 :(得分: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! */

}

答案 1 :(得分:0)

而不是这个hiearchy

  

[TableLayout&lt; TableRow&lt;的TextView]

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

<强> 更新 这对我来说很好。创建一个tableLayout,在其中生成几个带有一些textview的tablerows。

    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>