以下の構成でテーブル行を動的に追加する TableLayout があります。
<?xml version="1.0" encoding="utf-8"?>
<TableRow xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/myRow"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:padding="4dp"
>
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/name"
android:textAppearance="?android:attr/textAppearanceMedium"
android:gravity="left"/>
<TextView
android:id="@+id/textView5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/colon"
android:padding="10dip"/>
<EditText
android:id="@+id/add_server_name"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#FFBFCCCC"
android:inputType="text"
android:gravity="left"
android:paddingLeft="5dp"/>
</TableRow>
テーブル行の追加を使用しているコードは次のとおりです。
TableLayout table = (TableLayout) findViewById(R.id.create_table);
LayoutInflater inflater = getLayoutInflater();
ArrayList<String> edit_test_items = getTextFields();
if(edit_test_items!=null){
for (String item : edit_test_items) {
View row = inflater.inflate(R.layout.tbl_row_label_and_edittext,
table, false);
TextView label = (TextView) row.findViewById(R.id.textView1);
label.setText(item);
EditText value = (EditText) row.findViewById(R.id.add_server_name);
value.setTag(item);
actTextVals.add(value);
table.addView(row);
}
}
ArrayList<String> spinner_items = getSpinnerFields();
if(spinner_items!=null){
for (String item : spinner_items) {
View row = inflater.inflate(R.layout.tbl_row_label_and_spinner,
table, false);
TextView label = (TextView) row.findViewById(R.id.textView4);
label.setText(item);
Spinner spinner = (Spinner) row.findViewById(R.id.group);
spinner.setTag(item);
adapter = getSpinnerDataArray(item);
// ArrayAdapter.createFromResource(this,
// R.array.groups_array,android.R.layout.simple_spinner_item);
// set the appearance of widget items that show when open the widget
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
// set the adapter to spinner
spinner.setAdapter(adapter);
// set the action listener
spinner.setOnItemSelectedListener(this);
actSpinnerVals.add(spinner);
table.addView(row);
}
}
ArrayList<String> checkbox_items = getCheckBoxFields();
if(checkbox_items!=null){
for (String item : checkbox_items) {
View row = inflater.inflate(R.layout.tbl_row_label_and_checkbox,
table, false);
TextView label = (TextView) row.findViewById(R.id.textView4);
label.setText(item);
CheckBox checkBox = (CheckBox) row.findViewById(R.id.checkbox);
checkBox.setTag(item);
actCheckBoxVals.add(checkBox);
table.addView(row);
}
}
edit_test_items リストに約 4 項目しかない場合、画面は適切にレンダリングされますが、リスト テキストに約 10 項目がある場合、cl が表示されます。以下のスクリーンショットを見つけてください。