안드로이드

ConstraintLayout 속성 xml에서가 아닌 동적으로 적용하기

알통몬_ 2019. 5. 29. 09:46
반응형


공감 및 댓글은 포스팅 하는데

 아주아주 큰 힘이 됩니다!!

포스팅 내용이 찾아주신 분들께 

도움이 되길 바라며

더 깔끔하고 좋은 포스팅을 

만들어 나가겠습니다^^

 


저는 안드로이드 개발 시 

ConstraintLayout을 최상위 레이아웃으로 해서 작성합니다.

그래서 Layout 안에 들어가는 요소들에 아래같은 속성을 

많이 사용하는데요.


app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
위 속성들을 동적으로 적용해야하는 경우가 있습니다.


간단히 적용방법 알아보겠습니다.

저는 위 속성을 RecyclerView에 동적으로 줘야하는 경우였는데요.

이유는 상황에 따라 layout_marginTop 의 값을 다르게 줘야 했는데

이 경우 xml에서 적용해준 속성들이 먹지 않더라구요.

적용방법은 굉장히 간단합니다.


ConstraintLayout.LayoutParams layoutParams =
new ConstraintLayout.LayoutParams(
ConstraintLayout.LayoutParams.WRAP_CONTENT, ConstraintLayout.LayoutParams.WRAP_CONTENT
);
layoutParams.startToStart = ConstraintLayout.LayoutParams.PARENT_ID;
layoutParams.endToEnd = ConstraintLayout.LayoutParams.PARENT_ID;
layoutParams.topToTop = ConstraintLayout.LayoutParams.PARENT_ID;
layoutParams.topMargin = fromDpToPx(LAYOUT_MARGIN_TOP);
binding.cardViews.setLayoutParams(layoutParams);

이상입니다 . 감사합니다 . 


반응형