2012-05-08 10 views
0

アプリケーション開始時に領域に画像を入れたいと思っています。 画像の数が一定量ではないので、画像を動的に作成する必要があります。 良いバランスのために作成されている間、すべての画像の位置/余白を設定したいと思います。Android。作成時にイメージビューを移動する方法(位置/マージンを設定する)

私は以下を試しましたが、有効性はありません。 ・作成後、imageview.layout()を使用します。 ・LayoutParams.margins()を使用します。 ・AsyncTaskを使用して余白を設定します。 ・activity.runOnUiThread()。私は無効()メソッドを呼び出すことを知っていない

// After access server, if needed then add a imageview to the 'c_box' 
    // c_box: the parent that imageview to add. 
    FrameLayout c_box = (FrameLayout) findViewById(R.id.c_box); 

    MarginLayoutParams mlp = new MarginLayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 

    ImageView img1 = new ImageView(this); 
    img1.setImageResource(R.drawable.c_file); 
    img1.setLayoutParams(params); 
    img1.setLongClickable(true); 
    img1.setId(img_id); 
    c_box.addView(img1); 

    img1.setOnTouchListener(listener); 


    **// it's possible to set the position by layout or margin? 
    img1.layout(100, 100, 200, 200);** 

この

はコードです。


// After access server, if needed then add a imageview to the 'c_box' 
    // c_box: the parent that imageview to add. 
    FrameLayout c_box = (FrameLayout) findViewById(R.id.c_box); 

    MarginLayoutParams mlp = new MarginLayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 
    mlp.setMargins(100, 100, 200, 200); 
    ImageView img1 = new ImageView(this); 
    img1.setImageResource(R.drawable.c_file); 
    img1.setLayoutParams(mlp); 
    img1.setLongClickable(true); 
    img1.setId(img_id); 
    c_box.addView(img1); 

    img1.setOnTouchListener(listener); 

答えて

4

は最後に、私はポイントを見つけました。幅と高さを設定して、どこでもビューを配置できます。

2

あなたは動的にマージンを設定するにはMarginLayoutParams

MarginLayoutParams mlp = (MarginLayoutParams) yourImageViewHere.getLayoutParams(); 
mlp.setMargins(leftMargin, topMargin, rightMargin, bottomMargin);//all in pixels 
yourImageViewHere.setLayoutParams(mlp); 

を使用することができます。

FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(
     LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, 
     Gravity.NO_GRAVITY); 

第三のparam(Gravity.NO_GRAVITY)私は逃した:

+0

ありがとうございました。 イメージビューを作成して親に追加した後は可能ですか? – kinglomei

+0

さて、onDrawが呼び出された後にこれらの余白を設定する場合、レイアウトを再描画する必要があると思います。ビューの再描画を強制するには、yourImageViewHere.invalidate();と言うことができます。 http://developer.android.com/reference/android/view/View.html#invalidate()をご覧ください。これがうまくいくなら、私の答えを受け入れてください。 –

+0

非常にありがとう。この問題が解決された場合、私はあなたに答えてくれることをうれしく思います。私はいくつかのコードを追加した私の質問を編集しました。何かアドバイス? – kinglomei

関連する問題