0

TableLayout でいくつかの TextViews を使用して TableRow を動的に設定する際に問題が発生しています。2 つの写真があります。1 つは私の現在の状況が示され、もう 1 つは私のモックアップ、予想される状況 (達成する必要がある目標) です。XML レイアウトはありません。これらはすべてプログラムで作成されており、これも達成する必要があります。

表示されているスナップショットは、ハイスコアのプレーヤーのリストを取得し、それらをまとめて TableLayout に表示するハイスコア画面のものです。行/列の位置に問題があります。

なし

これが私のコードです:

public void onResume() {
    super.onResume();

    //=============================================
    TextView number = new TextView(this);
    number.setText("1");
    TextView place = new TextView(this);
    place.setText("4th");
    TextView testScore = new TextView(this);
    testScore.setText("113489");
    table = new TableLayout(this);
    //rows = new Stack<TableRow>();
    TableRow row = new TableRow(this);
    row.addView(number);
    row.addView(place);
    row.addView(testScore);
    table.addView(row);
    this.setContentView(table);
}

現在の状況からモックアップの予想される状況にコードを変更する方法を誰かが知っている場合は、喜んで感謝します。私が何か間違ったことをしている場合は、コメントを投稿してください。前もって感謝します。

4

2 に答える 2

0

特定の位置を動的に作成する、TableLayout と TableRow に関する適切なリンクを見つけました。リンクはこちら。もちろん、ここにあるコードは、単純な位置レイアウトを示すために使用される必要最小限のものです。

これが私のコードと結果の画像です:

public void onResume() {
        super.onResume();



        //=============================================

        dip = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, (float) 1, this.getResources().getDisplayMetrics());
        if (dip <= 0)
            dip = 1;


        TextView number = new TextView(this);
        TextView place = new TextView(this);
        TextView testScore = new TextView(this);


        number.setText("1");
        place.setText("4th");
        testScore.setText("113489");

        number.setWidth(50 * dip);
        place.setWidth(75 * dip);
        testScore.setWidth(150 * dip);

        number.setPadding(20*dip, 0, 0, 0);

        table = new TableLayout(this);
        TableRow row = new TableRow(this);
        row.addView(number);
        row.addView(place);
        row.addView(testScore);
        table.addView(row, new TableLayout.LayoutParams(TableLayout.LayoutParams.WRAP_CONTENT, TableLayout.LayoutParams.WRAP_CONTENT));
        this.setContentView(table);
    }

DIPユニットを入手する方法があるとは、本当に驚きです。最初から探しておくべきでした。:P

なし

于 2012-04-09T22:53:54.303 に答える
0

各テキストビューのレイアウト ウェイトを 1 に、レイアウト幅を 0dp に設定します。これにより、利用可能なスペースが均等に分割されます。必要に応じてレイアウトの重力を左、中央、右に使用して、最大の分離をさらに確保できます。

于 2012-04-09T22:05:19.010 に答える