프로그래밍과 잡담

[안드로이드] 코드로 margin 과 padding 설정하기.. 본문

프로그래밍/안드로이드

[안드로이드] 코드로 margin 과 padding 설정하기..

크레온 2014. 1. 26. 15:22

XML상에서는 그냥  


<Button 

android:paddingTop="20dp"

android:layout_marginTop="20dp" 

...

...

/>


위에 처럼 쓰면 된다.



하지만 동적으로 레이아웃을 만들 거나 할 때는 코드로 만들어야 한다.


그 방법은 


    
     // 아래와 같이 해줘야 기기에 맞는 DP가 나온다. 
    DisplayMetrics dm = getResources().getDisplayMetrics();
    int size = Math.round(20 * dm.density);
    
    Button btn = new Button(mContext);
    //패딩은 그냥 이렇게 쓰면 된다.
    btn.setPadding(0,size,0,0);

    //마진을 쓸려면  아래와 같은 방법을 쓰면 된다.
    LinearLayout.LayoutParams param = new LinearLayout.LayoutParams(
				LinearLayout.LayoutParams.WRAP_CONTENT,
				LinearLayout.LayoutParams.WRAP_CONTENT);
    param.topMargin = size;
    btn.setLayoutParams(param); 



위와 같이 쓰면 된다.  xml에 비해서는 좀 귀찮긴 한데..

뭐 별 수 있나. 이렇게 쓰라는데..


ps. 댓글을 달아 주신의 야화님의 의견을 따라서 일반적으로 앱을 만들때는 저런 식으로 하드코딩을 하지 않고 xml에 값을 입력해 놓고 getResource().getDimension(id)을 통해서 가져온다.  위에 처럼 그냥 코드에서 20을 넣어 버리면 기기에 맞는 밀도값이 안들어가서  맞지 않게 나온다.


반응형
Comments