0

私は初心者の Android 開発者ですが、C# のスキルがいくらかあります。私はc#でスライディングパズルを作成しましたが、Androidで作成したいと考えています。

これは私のコードです:

  TableLayout layout = new TableLayout(this);
  setContentView(layout);
  layout.setBackgroundColor(Color.GRAY);
  final TextView text = new TextView(this);
  layout.addView(text);

  layout.setStretchAllColumns(true);  
    layout.setShrinkAllColumns(true); 

  int rows = 3;
final int colomuns = 3;


  for ( int i = 0 ; i < rows ; i ++)
  {

      TableRow tr = new TableRow(this);

      for ( int k = 0 ; k < colomuns ; k++)
      {
          final int indexk = k+1;
              final Button btn = new Button(this);
              final int indexi = i;
              final int index = indexi*colomuns+indexk ;
                btn.setId(index);
                btn.setTextSize(36);
                btn.setPadding(20, 20, 20, 20);
                btn.setTag(new Point(indexi, indexk));
                btn.setText(""+ index);

                //layout params
                TableRow.LayoutParams params = new TableRow.LayoutParams();
                params.setMargins(5, 5, 5, 5);
                btn.setLayoutParams(params);
                //----------------
                btn.setBackgroundColor(Color.WHITE);
                btn.setOnClickListener(new View.OnClickListener() 
                {
                    public void onClick(View v) {


                        TableRow.LayoutParams leftViewParams = new TableRow.LayoutParams();
                        leftViewParams.column = 1;


                        btn.setLayoutParams(leftViewParams);
                        Point p = (Point) btn.getTag();



                    }
                });
                tr.addView(btn);

      }

      layout.addView(tr);
  }

しかし、「位置」プロパティが見つからないため問題があり、レイアウトでこれを行う方法が必要ですか? 私のTableLayoutへの選択は正しかったですか?

ありがとう、

4

2 に答える 2

0

ボタンをレイアウトに追加してから、マージン/パディングを使用してその位置をオフセットする必要があります。X、Y に基づいて配置するべきではありません。

左余白と上余白を使用して、必要に応じて位置合わせを試みます。

于 2013-07-15T12:16:35.827 に答える
0
TableRow.LayoutParams aa = new TableRow.LayoutParams();
aa = (android.widget.TableRow.LayoutParams) v.getLayoutParams();

TableRow.LayoutParams leftViewParams = new TableRow.LayoutParams();
leftViewParams.setMargins(aa.leftMargin + 50, 5, 5, 5);
leftViewParams.column = aa.column +1;
 v.setLayoutParams(leftViewParams);

これは結果です:

画像

于 2013-07-16T07:47:56.460 に答える