2017-03-03 34 views
0

実行時に制約レイアウトで別のものを追加しようとしています。しかし、私はいつもただ一つのテキストビューで終わり、残りは隠れてしまいます。私はビューを連鎖させることを含むいくつかのことを試みましたが、何も動作していないようです。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); 
    } 

私はこのような何かを参照期待しています - あなたはすべての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); set.connect(textView.getId()、ConstraintSet.TOP、markerLayout.getId()、ConstraintSet.TOP、16); } else { Timber.d( "Position - " + position); set.connect(textView.getId()、ConstraintSet.TOP、previousTextViewId、ConstraintSet.BOTTOM、16); } – sku

+0

申し訳ありませんコードのスタイルを設定できません – sku

+1

私の悪いあなたのソリューションは完璧に動作します。私はpreviousTextViewId = textViewIdを持っていた。 set.Connectの前に。私はそれを下に移動し、それは正常に働いた。おかげでニック。 – sku

関連する問題