0

以下の構成でテーブル行を動的に追加する 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 が表示されます。以下のスクリーンショットを見つけてください。

4

2 に答える 2

1

android:shrinkColumns="1"TableLayout で を設定してみてください。

于 2012-07-19T03:56:31.313 に答える
1

私は実際に何が間違っているかを理解しました。線形レイアウト内にテーブルレイアウトがありました。スクロール ビューに変更したところ、すべてが見栄えがよくなりました。

于 2012-07-20T02:05:08.360 に答える