2017-03-03 12 views
0

Constraint Layout에서 런타임에 TextView를 하나씩 추가하려고합니다. 그러나 나는 항상 단 하나의 텍스트 뷰로 끝나고 나머지는 뒤에 숨어 있습니다. 보기 연결을 포함하여 여러 가지를 시도했지만 아무 것도 작동하지 않는 것 같습니다.Android ConstraintLayout : 동적 뷰를 다른 뷰 아래에 추가하는 방법

private void method(int position) 
    { 
     ConstraintSet set = new ConstraintSet(); 
     TextView textView = new TextView(getContext()); 
     int textViewId = 100 + position; 
     //previousTextViewId = textViewId; 
     textView.setId(textViewId); 
     ConstraintLayout.LayoutParams layoutParams = new ConstraintLayout.LayoutParams(0, WRAP_CONTENT); 
     layoutParams.rightToRight = PARENT_ID; 
     layoutParams.leftToLeft = guideline_60.getId(); //Vertical GuideLine of 60% 
     layoutParams.rightMargin = 8; 
     textView.setLayoutParams(layoutParams); 
     if (Build.VERSION.SDK_INT < 23) 
     { 
      textView.setTextAppearance(getContext(), R.style.textStyle); 
     } 
     else 
     { 
      textView.setTextAppearance(R.style.textStyle); 
     } 
     textView.setBackgroundColor(backgroundColor); 
     textView.setText(categoryName); 
     textView.setGravity(Gravity.CENTER); 
//markerLayout is the ConstraintLayout 
     markerLayout.addView(textView, position); 
     set.clone(markerLayout); 
     //set.addToVerticalChain(textView.getId(),previousTextViewId,PARENT_ID); 
     set.connect(textView.getId(), ConstraintSet.TOP, markerLayout.getId(), ConstraintSet.TOP, 60); 
     set.applyTo(markerLayout); 
    } 

I는 다음과 같이 볼 기대하고있다 - 당신은 모든 textviews의 상단은 부모의 상단에 연결되어 말을하는지

enter image description here

답변

4

을 :

set.connect(textView.getId(), ConstraintSet.TOP, 
     markerLayout.getId(), ConstraintSet.TOP, 60); 

당신에게 하나의 상단이 다른 하나의 하단에 연결된다는 것을 말하고 싶습니다. -

set.connect(textView.getId(), ConstraintSet.TOP, 
    previousTextView.getId(), ConstraintSet.BOTTOM, 60); 

방법을 메소드라고합니다.

+0

나는 코드를 일반화하려고 했으므로 메서드를 "메서드"로 바꿨다. :). 나는 여전히 아래의 코드와 동일한 문제가있다. (position == 0) { Timber.d ("Position -"+ position); (텍스트 뷰). } else { Timber.d ("Position -"+ position); set.connect (textView.getId(), ConstraintSet.TOP, previousTextViewId, ConstraintSet.BOTTOM, 16); } – sku

+0

죄송합니다. 코드의 스타일을 지정할 수 없습니다. – sku

+1

내 솔루션이 완벽하게 정상적으로 작동하지 않습니다. 나는 previousTextViewId = textViewId를 가졌다. set.Connect 전에. 나는 그것을 아래로 움직였다. 그리고 그것은 잘 움직이게되었다. 고마워, 닉. – sku

관련 문제