0

こんにちは!この TableLayout があり、作成後に画面が空になります。行数と列数は手動で指定する仕様のため、xmlファイルはありません。まず、k <= 行および l <= 列の座標 (k, l) にボタンを追加する場合は、このソリューションを使用する必要があるため、空の 1 x 1 の表示されない TextView-s でテーブルを埋める必要があります。コードは次のとおりです。

package hu.harge;

import java.awt.Button;

import javax.swing.text.TableView.TableRow;

import sun.jkernel.Bundle;

public class AccessibleLayoutActivity extends Activity {

    private int rows, columns;
    private TableLayout tl = null;
    private ScrollView sv;

    public void createView(int rows, int columns) {
        // TODO Auto-generated method stub

        this.rows = rows;
        this.columns = columns;
        this.sv = new ScrollView(this);

        tl = new TableLayout(this);
        for (int i = 0; i < rows; i++) {
            TableRow tr = new TableRow(this);
            for (int j = 0; j < columns; j++) {
                TextView tv = new TextView(this);
                tr.addView(tv);
                tv.setMaxHeight(1);
                tv.setMaxWidth(1);

            }
            tl.addView(tr);

        }

        sv.addView(tl, new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
        this.setContentView(sv);
    }

    public void putButton(int row, int column, final String label) {
        if (tl != null) {

            // TODO Auto-generated method stub
            if (row <= rows && column <= columns) {

                Button b = new Button(this);
                b.setText(label);
                TableRow tr = (TableRow) tl.getChildAt(row - 1);
                tr.removeViewAt(column - 1);
                tr.addView(b, column - 1, new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));

            }
        }

    }

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        createView(6, 3);

        putButton(1, 3, "Exit");
        putButton(2, 1, "Menu");

    }
}

ListView は私の問題の解決策にはなりません。

問題は、画面に何も映っていないことです。

答えてくれてありがとう: ゲリ

4

2 に答える 2

0

ここに多くのエラーが表示されます。まず、

tr.addView(b, column - 1, new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));

に変更する必要があります

tr.addView(b, column - 1, new TableRow.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));

要素の親のクラスに応じて、layoutparams のクラスには常にそのようなプレフィックスが必要です。

さらに、TableRow、テーブル、またはテレビのレイアウトをどこに設定したかわかりません。どのビューでも、高さと幅を設定する必要があります。いつも。

それが役に立たない場合 (他のエラーも発生する可能性があります)、XML からのレイアウトの使用を開始し、それらを機能させてから、コードに 1 つずつ移動することをお勧めします。そして、すべてのステップで機能を確認してください。また、すべての要素が見えるように背景を与えます。そして、デバッグ時間をもう少し長くしてください - もう一度、それらをよりよく見るために... Red Hatのオオカミとして:-)

于 2012-01-30T13:34:54.983 に答える
0

ドキュメントによると: TableRow の子は、XML ファイルで layout_width および layout_height 属性を指定する必要はありません。TableRow は常に、これらの値をそれぞれ MATCH_PARENT と WRAP_CONTENT に強制します。

于 2014-10-19T07:53:52.827 に答える