5

プログラムで行を追加する TableLayout があり、プログラムで行に含まれる要素の「重み」を設定しようとしています。

weightSumTableRow を設定し、「LayoutParams」の最後のパラメーターを使用して列の「重み」を設定することでそれを実行しようとしていますが、何も表示されません。代わりに、要素に固定幅を与えると、コードはうまく機能します。

これは私のレイアウトです:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <TableLayout
        android:id="@+id/sample"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp"
        android:gravity="center" >
    </TableLayout>
</LinearLayout>

これはコードです:

public class HomeFragment extends Fragment {
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        return inflater.inflate(R.layout.home, null);
    }

    @Override
    public void onStart() {
        super.onStart();

        TableLayout tl = (TableLayout)getActivity().findViewById(R.id.sample);
        TableRow tr = new TableRow(getActivity());
        tr.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.WRAP_CONTENT));
        tr.setGravity(Gravity.CENTER);
        tr.setWeightSum(1f);

        TableRow.LayoutParams lp;
        TextView tv1 = new TextView(getActivity());
        lp = new TableRow.LayoutParams(0, TableRow.LayoutParams.WRAP_CONTENT, 0.6f);
        tv1.setText("AAA");
        tv1.setLayoutParams(lp);
        TextView tv2 = new TextView(getActivity());
        lp = new TableRow.LayoutParams(0, TableRow.LayoutParams.WRAP_CONTENT, 0.4f);
        tv2.setText("BBB");
        tv2.setLayoutParams(lp);

        tr.addView(tv1);
        tr.addView(tv2);
        tl.addView(tr);
    }
}
4

1 に答える 1