3

プログラムでtableLayoutにデータを入力しています。私の列はこのようになりたい

<TableRow android:id="@+id/tableRow1"
                        android:layout_width="wrap_content" android:layout_height="wrap_content">
                        <ImageView android:src="@drawable/icon" android:id="@+id/imageView1"
                            android:layout_height="wrap_content" android:layout_width="wrap_content"></ImageView>
                        <LinearLayout android:id="@+id/linearLayout2"
                            android:layout_width="wrap_content" android:layout_height="wrap_content"
                            android:orientation="vertical">
                            <TextView android:id="@+id/textView2" android:text="TextView"
                                android:layout_height="wrap_content" android:layout_width="wrap_content"></TextView>
                            <TextView android:text="TextView" android:id="@+id/textView1"
                                android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>
                        </LinearLayout>
                        <Button android:text="Button" android:id="@+id/button1"
                            android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
                    </TableRow>

私はこれを行うコードでそれを試しました

TableRow row = new TableRow(activity);
      row.setGravity(Gravity.CENTER);
      row.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT,TableRow.LayoutParams.WRAP_CONTENT));


      image.setPadding(10, 10, 10, 10);       
      ((LinearLayout) image).setGravity(Gravity.LEFT);
      row.addView(image);

      LinearLayout main = new LinearLayout(row.getContext());
     main.setLayoutParams(new LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.WRAP_CONTENT));
      main.setOrientation(LinearLayout.VERTICAL);


      TextView nameView = new TextView(activity);

      if(name.length() > 22)
          nameView.setText(name.substring(0, 22)+"...");
      else
          nameView.setText(name);

      nameView.setPadding(10, 10, 10, 10);
      nameView.setTextColor(Color.parseColor("#83be56"));
      nameView.setTypeface(null,Typeface.BOLD);
      nameView.setLayoutParams(new LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.WRAP_CONTENT));

      main.addView(nameView,new LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.WRAP_CONTENT));

      row.addView(main);

      bt.setText("Respond");
      bt.setPadding(10,10,10,10);
      bt.setGravity(Gravity.CENTER);

      row.addView(bt);

ただし、linearlayoutは行に表示されません。どこがおかしいの?ありがとう

4

3 に答える 3

1

この SO answerを見ているかもしれません。これは、プログラムで を作成しTableRow、部分的な定義から膨らませる方法を説明していますXML

EDIT、コメントの後:リンクされた回答の要点は次のとおりです。

  • 独自のスタイル セットを使用して、表の行を表す部分レイアウトを作成します。
<?xml version="1.0" encoding="utf-8"?>
<TableRow xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent" 
  android:layout_height="wrap_content"
  style="@style/tr_withborder" />
  • コードを介してパーシャルを動的に膨張させます。
TableRow tr = (TableRow) getLayoutInflater().inflate(R.layout.partial_table_row, null);
于 2011-11-28T15:14:14.413 に答える
0

テーブル レイアウトに TableRows をプログラムで追加する方法を次に示します。各ビューの質問は、実際には、それが配置されるフラグメントに依存しない XML ファイルです。そのフラグメントには、新しい質問を取得して下部に追加する Tablelayout である questionContainer があります (questionContainer はスクロールビューにあります)。

public class EconFragment extends SherlockFragment {

private TableLayout questionContainer;
int pos = 0;
private String[] titles = {"The first title ", "hallo1","hallo2", "hallo3",
        "hallo4", "hallo5","hallo6", "hallo7","hallo8", "hallo9"};

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    Log.v("Econ", "onCreateView");
    View v = inflater.inflate(R.layout.econfragment, container, false);
    questionContainer = (TableLayout) v.findViewById(R.id.questionContainer);
    //bs
    int leftMargin=5;
    int topMargin=5;
    int rightMargin=5;
    int bottomMargin=5;
    while (pos < 10) {
    View question = inflater.inflate(R.layout.question, null);
    question.setId(pos);
    TextView title = (TextView) question.findViewById(R.id.questionTextView);
    title.setText(titles[pos]);
    Button charts = (Button) question.findViewById(R.id.chartsButton);
    charts.setId(pos);
    charts.setOnClickListener(chartsListener);
    TableRow tr = (TableRow) question;
    TableLayout.LayoutParams trParams = new TableLayout.LayoutParams(
            TableLayout.LayoutParams.MATCH_PARENT,
            TableLayout.LayoutParams.WRAP_CONTENT);
    trParams.setMargins(leftMargin, topMargin, rightMargin, bottomMargin);
    tr.setLayoutParams(trParams);
    Log.v("econ", "while loop");
    questionContainer.addView(tr);
    pos++;
    }
    pos = 0;
    return v;
}
于 2012-04-01T23:46:47.807 に答える