programing

런타임에 프로그래밍 방식으로 "android:layout_below"를 설정할 수 있습니까?

iphone6s 2023. 10. 4. 21:02
반응형

런타임에 프로그래밍 방식으로 "android:layout_below"를 설정할 수 있습니까?

런타임에 RelativeLayout을 작성할 때 다음과 같은 값을 설정할 수 있습니까?android:layout_below계획적으로?

예:

RelativeLayout.LayoutParams params= new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT); 
params.addRule(RelativeLayout.BELOW, R.id.below_id);
viewToLayout.setLayoutParams(params);

첫째, 코드는 높이와 너비를 지정하여 새로운 레이아웃 파라미터를 만듭니다.addRulemethod는 xml과 동등한 기능을 적절히 추가합니다.android:layout_below. 그럼 그냥 전화해봐요View#setLayoutParams당신이 그 파람들을 갖고 싶어하는 관점에서.

또는 뷰 현재 레이아웃 파라미터를 사용하여 다음과 같이 수정할 수 있습니다.

RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) viewToLayout.getLayoutParams();
params.addRule(RelativeLayout.BELOW, R.id.below_id);

@jackofallcode 답변은 맞지만 한 줄로 쓸 수 있습니다.

((RelativeLayout.LayoutParams) viewToLayout.getLayoutParams()).addRule(RelativeLayout.BELOW, R.id.below_id);

infix 기능이 있는 Kotlin 버전

infix fun View.below(view: View) {
      (this.layoutParams as? RelativeLayout.LayoutParams)?.addRule(RelativeLayout.BELOW, view.id)
}

그러면 다음과 같이 쓸 수 있습니다.

view1 below view2

또는 이를 일반 함수라고 부를 수도 있습니다.

view1.below(view2)

언급URL : https://stackoverflow.com/questions/3277196/can-i-set-androidlayout-below-at-runtime-programmatically

반응형