2

すべて

次のコードを使用して、ImageViewとiamの位置を動的に変更する必要があります

int x=100,y=100;
RelativeLayout.LayoutParams mparam = new RelativeLayout.LayoutParams((int)(LayoutParams.FILL_PARENT),(int)(LayoutParams.FILL_PARENT));
    mparam.topMargin=x;
    mparam.leftMargin=y;
    ball.setLayoutParams(mparam);
    x+=100;
    y+=100;

しかし、私は何の変化も得られませんでした。

出来ますか?そしてどうやって?

4

2 に答える 2

4

あなたはマージンを変更しますが、その位置は変更しません。それは良い解決策ではないようです。メソッドを使用してみてくださいView.layout(int, int, int, int) ドキュメントは言う:

public void layout(int l、int t、int r、int b)

以来:APIレベル1
ビューとそのすべての子孫にサイズと位置を割り当てます
これは、レイアウトメカニズムの第2フェーズです。(最初は測定です)。
このフェーズでは、各親がすべての子のレイアウトを呼び出して、子を配置します。
これは通常、に保存された子の測定値を使用して行われます。
メジャーpass()。派生クラスはこのメソッドをオーバーライドしないでください。派生
子を持つクラスはonLayoutをオーバーライドする必要があります。そのメソッドでは、彼らは呼び出す必要があります
それぞれの子供たちのレイアウト。

パラメーター

l親に対する左の位置
t親に対するトップの位置
r親に対する正しい位置
b親に対する下の位置
于 2011-07-07T07:31:36.400 に答える
1

ビューでsetPaddingを呼び出すことができます。したがって、コードに(ちなみに、コードブロックに入れる必要があります!)、このメソッドへの呼び出しを追加するだけです。

int x=100,y=100; 
LayoutParams mparam = new LayoutParams((int)(LayoutParams.FILL_PARENT),(int) (LayoutParams.FILL_PARENT));
ball.setLayoutParams(mparam); 
ball.setPadding(x,y,0,0);

x+=100; y+=100;
ball.setPadding(x,y,0,0);
于 2011-07-07T07:42:20.923 に答える