2016-11-03 9 views
0

프로그래밍 방식으로 ConstraintLayouts와 가이드 라인을 어떻게 만듭니 까? 위의 코드를 사용하여 가이드 라인을 사용하여 화면 중앙에 뷰를 고정시키는 간단한 레이아웃을 만들려고 시도했지만 화면의 왼쪽에 빨간색 'v'뷰를 렌더링합니다 (screenshot 참조)코드에서 안드로이드 ConstraintLayout과 가이드 라인 생성하기

public class MainActivity extends Activity { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     ConstraintLayout cl = new ConstraintLayout(this); 
     cl.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)); 
     setContentView(cl); 

     Guideline gl = new Guideline(this); 
     ConstraintLayout.LayoutParams gllp = new ConstraintLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, 500); 
     gllp.guidePercent = 0.5f; 
     gllp.orientation = LinearLayout.VERTICAL; 
     gl.setLayoutParams(gllp); 
     gl.setId(View.generateViewId()); 
     cl.addView(gl); 

     View v = new View(this); 
     v.setId(View.generateViewId()); 
     v.setBackgroundColor(0xFFFF0000); 
     ConstraintLayout.LayoutParams lp = new ConstraintLayout.LayoutParams(50, 500); 
     lp.rightToRight = gl.getId(); 
     v.setLayoutParams(lp); 
     cl.addView(v); 
    } 
} 

답변

0

ConstraintLayout 버전을 사용하고 계십니까? 내가 잘못했다, 베타 4는이 문제에 대한 수정 프로그램이 -

enter image description here

편집 : 베타 3으로 예를 시도, 내가 올바른 동작을 얻을.

또한 ConstraintLayout을 사용하여 프로그래밍 방식으로 레이아웃 매개 변수를 만들려면 ConstraintLayout.LayoutParams에서 validate() 함수를 호출하여보기로 설정해야합니다.

+0

저는 beta3도 사용하고 있습니다. 이것은 매우 이상합니다. 설치시 https://code.google.com/p/android/issues/detail?id=227030에서 오류가 발생했으나 오류가 발생해도 설치가 완료됩니다. 나는 실제 constraint-layout-1.0.0-beta3.aar 파일의 md5를 검사했다. 그래서 나는 실제로 beta3 인 것처럼 보이는 올바른 md5 (0b98641b30b62b65adbeba29d90d1107)를 가지고있다. – snoob

+0

방금 ​​동료가 제약 레이아웃 (오류없이 성공)을 설치하고 이것을 시도하면 그는 내가하는 것과 똑같은 부러진 행동을하게됩니다. beta3 사용. – snoob

+0

나는 beta1로 올바른 동작을 얻는다. 그래서 이것은 베타 2의 회귀처럼 보입니다. 내 컴퓨터와 동료 컴퓨터에서이 사실을 확인했습니다. Android 5, Android 5, 6, 7 (모두 동일한 동작)을 사용하는 nexus 6에서 테스트되었습니다. – snoob