1

このアクティビティを実行すると、不正な引数の例外が発生します。誰かが理由を指摘できますか?仕様に関する私のコメントが、このコードに対する私の誤解につながることを願っています。

[Activity(Label = "Views/Layouts/GridLayout/3. Form (Java)", MainLauncher = true)]
  [IntentFilter(new[] { Intent.ActionMain }, Categories = new string[] { })]
  public class GridLayout3 : Activity {
    protected override void OnCreate(Bundle bundle) {
      base.OnCreate(bundle);


      SetContentView(Grid(this));
      //SetContentView (Create (this));
    }

    public static View Grid(Context context) {
      GridLayout gL = new GridLayout(context);
      gL.AlignmentMode = GridAlign.Bounds;
      gL.UseDefaultMargins = true;
      //gL.ColumnOrderPreserved = false;
      //gL.RowOrderPreserved = false;
      gL.RowCount = 5;
      gL.ColumnCount = 5;

      //I want these Specs to tell the View to take up 2 rows of space. 
      //IE, (row 0-indexed) of 3 and 4 in column 4 should contain 
      //the same button
      GridLayout.Spec specialRowSpec = GridLayout.InvokeSpec(3, 4);
      GridLayout.Spec specialColSpec = GridLayout.InvokeSpec(4);

      bool keyIsSpecial = false;
      for (int i = 0; i < gL.RowCount; i++) {
        GridLayout.Spec row = GridLayout.InvokeSpec(i);

        for (int v = 0; v < gL.ColumnCount; v++) {
          GridLayout.Spec col = GridLayout.InvokeSpec(v);
          Button bt = new Button(context);
          bt.Text = "Tester";
          if (i == 3 && v == 4) {
            keyIsSpecial = true;
          }
          if (keyIsSpecial) {
            GridLayout.LayoutParams param = new GridLayout.LayoutParams();
            param.RowSpec = specialRowSpec;
            param.ColumnSpec = specialColSpec;
            param.Height = 100;
            gL.AddView(bt, new GridLayout.LayoutParams(param));
            return gL;
          } else {
            gL.AddView(bt, new GridLayout.LayoutParams(row, col));
          }
          if (v == gL.ColumnCount - 1) {
            v = 0;
            break;
          }
        }
      }
      return gL;
    }

特別な仕様でビューを追加すると、例外がスローされます。gL.AddView(bt, new GridLayout.LayoutParams(param));

私が誤解しているかもしれない GridLayout.Spec ドキュメントへのリンクは次のとおりです: http://developer.android.com/reference/android/widget/GridLayout.Spec.html

行のインデックスの代わりに合計サイズ (高さ) を使用するように、2 番目の引数を specialRowSpec に交換しようとしました。例:GridLayout.Spec specialRowSpec = GridLayout.InvokeSpec(3, 2);これにより、5 行 5 列のボタンのグリッドが得られ、複数の行にまたがるボタンはありません。

質問は?

4

0 に答える 0