0

私はドキュメントを読み、いくつかのサンプルコードを見ました。GridLayouts を適切に使用する方法がまだわかりません。具体的には、Android の仕様を理解していないと思います。

現時点でやりたいことは、GridLayout の 1 行に 2 つのボタンを配置することだけです。これどうやってするの?

これが私が得たものです。最初に仕様を作成します。
//6 rows is the goal of this View
Spec rowSpec1 = GridLayout.InvokeSpec(0, 5, GridLayout.Center);
Spec colSpec1 = GridLayout.InvokeSpec(0);
Spec colSpec1 = GridLayout.InvokeSpec(0)
追加するボタンを作成します:
Button bt1 = new Button(this._Context); Button bt2 = new Button(this._Context); //the this keyword is just referring to my class that extends GridLayout //Where I've stored the Activity's Context
次に、ボタンをグリッドに追加しましょう:
this.AddView(bt1, new GridLayout.LayoutParams(rowSpec1, colSpec1)); this.AddView(bt2, new GridLayout.LayoutParams(rowSpec1, colSpec2));

この結果、Android デバイスの左上部分に 1 つのボタンが表示されます。これらのボタンをプログラムで目的の場所に挿入するにはどうすればよいですか? また、仕様は実際には位置合わせの目的でのみ使用されることを読みましたが、子ビューの行と列の配置に使用されているように見えるコードを見てきました。それが私がやっていることです。誰かが私のために Android の仕様を説明してくれませんか? みんなありがとう!

4

1 に答える 1

2

colSpec1 変数が 2 回定義されていますが、これはタイプミスだと思います。

あなたが意味すると仮定します:

Spec rowSpec1 = GridLayout.InvokeSpec(0, 5, GridLayout.Center);
Spec colSpec1 = GridLayout.InvokeSpec(0);
Spec colSpec2 = GridLayout.InvokeSpec(0);

rowSpec1 変数は行 0 から始まり、5 行にまたがります。どちらの列仕様も、列 0 から始まり、1 列にまたがっています。ボタンを配置すると、行と列が正確に一致するため、ボタンが積み上げられます。

GridLayout 仕様は、GridLayout セルの 1 つのディメンションと考えてください。セル内にビューを表示するには、セルの両方の次元が必要です。アイテムを GridLayout に配置するときは、必要でない限り、セルが重ならないように注意する必要があります。

それを念頭に置いて、あなたはより良い運を得るかもしれません:

Spec rowSpec1 = GridLayout.InvokeSpec(0, GridLayout.Center);
Spec rowSpec2 = GridLayout.InvokeSpec(1, GridLayout.Center);
Spec colSpec1 = GridLayout.InvokeSpec(0);
Spec colSpec2 = GridLayout.InvokeSpec(0);

行をまたがる必要がないように見えるので、rowSpec 変数をサイズ 1 で定義できます。

次に、ビューを追加できるはずです。

this.AddView(bt1, new GridLayout.LayoutParams(rowSpec1, colSpec1));
this.AddView(bt2, new GridLayout.LayoutParams(rowSpec2, colSpec2));
于 2014-02-25T00:18:07.000 に答える