2011-11-21 2 views
2

다음은 사실입니다. 프로그래밍 방식으로 일부 이미지를 추가하고 싶습니다. 이미지의 첫 번째 이미지는 LinearLayout이고 vertical orientation 인 이미지는 5diptopMargin이어야합니다.MarginLayoutParams.setMargins()가 작동하지 않습니까?

LinearLayout body = (LinearLayout) findViewById(R.id.body); 

    for (int i = 1; i <= 4; i++) { 

     ImageView img = new ImageView(this); 
     MarginLayoutParams lp = new MarginLayoutParams(-2, -2); 

     img.setImageResource(R.drawable.image); 
     if (i != 1) { 

      lp.setMargins(0, 5, 0, 0); 

     } 
     img.setLayoutParams(lp); 

     body.addView(img); 
     body.requestLayout(); 
    } 

I 수직 하나씩 정렬되지만 (코드에서와 같이, 5dip) 더 topMargin이없는 (여기) 4 개 이미지 볼 수있는 프로그램을 실행함으로써 : 코드 세그먼트 이하. bodyLinearLayoutid입니다.

<LinearLayout 
      android:id="@+id/body" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:background="#901b0e08" 
      android:orientation="vertical" 
      android:paddingLeft="6dp" 
      android:paddingRight="8dp" > 
</LinearLayout> 

여기에 무엇이 잘못 되었나요?

감사합니다.

답변

7

한번에 변경 당신이에 MarginLayoutParams :

LayoutParams lp = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 

이 일을하는 이유, bodyLinearLayout이며, 따라서 당신이 LinearLayout - 특정 LayoutParams 사용할 것입니다.

+0

감사합니다. Kasper !!!!! – IronBlossom

0

ImageView의 경우 padding이지만 margin으로 설정하십시오. 때로는 잘 작동합니다. 직접 ImageView에 패딩 크기를 설정하지 않고도 LayoutParams을 선언 할 수 있습니다.

1

당신은 아마 예를 들어,의 LayoutParams 'gravity 속성을 설정해야합니다

lp.gravity = 0; //AXIS_X_SHIFT 

나를 위해 잘 작동 무슨 그.

+0

FrameLayout의 여백 설정이 OS 4.x에서는 작동했지만 아무런 효과가없는 것 같았습니다. 2.3. 설정 lp.gravity = Gravity.NO_GRAVITY는 2.3 문제를 수정했습니다. – mwk