int gap = prevMonthDay - si.getEnd_dd();

// Get screen info
DisplayMetrics metrics = new DisplayMetrics(); 
getWindowManager().getDefaultDisplay().getMetrics(metrics);
// 이 값은 0.75, 1.0, 1.5, 2.0 등의 값을 가지며
// 이 값에 dp을 곱하면 pixel 단위의 값을 구할 수 있습니다.
float dpi = metrics.density;

int tvWidth = (int)((42*(gap+1) + 2*(gap))*dpi);
int tvHeight = (int)((18)*dpi);

tvSch.setText(si.getContents());
tvSch.setLayoutParams(new LinearLayout.LayoutParams(tvWidth, tvHeight));
ViewGroup.MarginLayoutParams margin =
new ViewGroup.MarginLayoutParams(tvSch.getLayoutParams());
margin.setMargins((int)(1*dpi), 0, (int)(1*dpi), 0);
tvSch.setLayoutParams(new LinearLayout.LayoutParams(margin));


소스코드 상에서 동적으로 layout width값만 바꾸고 싶은데

setLayoutParams()를 사용하면 margin이나 padding값이 날아가버리더군요 =_=;;

그래서 여차저차 찾아서 setMargins()으로 margin값을 다시 적용해보았는데,

레이아웃 xml로 적용한거랑 다르게 나옵니다.

margin값을 유지하면서 layout_width값을 변경하는 방법 없을까요?

setWidth는 layout_width 속성값과는 상관이 없더군요;