0

画面上で画像ボタンをランダムに移動する Android アプリケーションを作成しています。どのレイアウトが役立つか混乱しています。絶対レイアウトには x 軸と y 軸がありましたが、現在は廃止されています。私はrelativeを使ってみましたが、うまくいきません。ボタンが動き続けるように、ランダムな番号を生成してx、yの位置に配置したいと考えています。

これが私がしたことです:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    submit = (Button)findViewById(R.id.submit1);
    submit.setOnClickListener(this);
   machar = (ImageButton)findViewById(R.id.machar);
    ed=(EditText)findViewById(R.id.eT1);
    tb=(ToggleButton)findViewById(R.id.tb1);
    tb.setOnClickListener(this);
  RelativeLayout r1 =(RelativeLayout)findViewById(R.id.l1);

    LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);

    params.leftMargin=10;
    params.rightMargin=20;
    params.topMargin=30;
    params.bottomMargin=40;
    r1.setLayoutParams(params);
    r1.addView(machar);

}

machar画像ボタンはこちら。このコードは機能せず、XML ファイルには l1 という名前の相対レイアウト タグと、その中に machar という名前の画像ボタンが含まれています。私が間違っていることは何ですか?

4

3 に答える 3

0

あなたが発見したように、相対レイアウトには絶対位置はありません。ImageButton を移動するために、margin right と margin top of machar をランダムに変更できます。

于 2012-01-03T06:13:57.893 に答える
0

あなたの問題は、既に追加されているビューを追加しようとしている可能性があると思います。ImageButton machar は既に xml で宣言されているため、 を呼び出したときに画面に描画されますsetContentView

私が提案するのは、ImageButton machar をプログラムで作成することです。つまり、xml レイアウトで宣言するのではなく、onCreateメソッド中に作成します。

于 2012-01-03T08:28:10.257 に答える
0

いくつかのマージンを変更した後、呼び出す必要がありますrequestLayout()

public void requestLayout()

このビューのレイアウトを無効にする何かが変更されたときにこれを呼び出します。これにより、ビュー ツリーのレイアウト パスがスケジュールされます。

requestLayout()View 要素を呼び出す必要があります。要素RelativeRuleの上にない場合set、margin は 内の位置を制御しRelativeLayoutます。

于 2012-02-07T15:01:54.030 に答える