2017-03-16 8 views
0

ConstraintLayout에서 다른 뷰의 같은 위치에 뷰를 추가하려고 시도했지만 추가 된 뷰는 다른 뷰의 LayoutParams를 가져 오지 않습니다.ConstraintLayout에서 뷰를 프로그래밍 방식으로 추가하기

추가 된보기가 컨테이너의 왼쪽 위에 나타납니다.

TextView cloneView = new TextView(getContext()); 
cloneView.setLayoutParams(otherView.getLayoutParams()); 
mainContainer.addView(cloneView); 

답변

1

당신이 ConstraintSet를 사용하여 제약 조건을 추가 할 가지고 ConstraintLayout에 뷰를 추가하려면 :

이 내 코드입니다.

View v = findViewById(...); 
ConstraintLayout cl = (ConstraintLayout) findViewById(...); 


ConstraintSet c = new ConstraintSet(); 
cl.addView(v); 
int id = v.getId(); 

c.clone(cl); 
c.connect(id, ConstraintSet.Top, otherViewIdAboveV, ConstraintSet.BOTTOM, 0); 
... 
other constraints 
... 
c.applyTo(cl); 
+0

clone() - 레이아웃에서 제약 조건을 복사합니다. 레이아웃이 부모이고 제약 조건이없는 경우는 무엇입니까? –

+0

@PavelPoley 의견을 잘 모르겠습니다. 이 경우 부모가 ConstraintLayout이고이를 통해 뷰에 해당 컨투어를 추가합니다. 새로운 뷰를 추가 할 때 제약 조건이 없다면 여전히 새로운 제약 조건이 추가되어야합니다. – Juan