2017-06-20 10 views
0

公式ドキュメントを接続して設定されていることは言う:https://developer.android.com/reference/android/support/constraint/ConstraintSet.html#connect(int、int型、int型、int型、int型)どのような制約に余裕の意味は接続設定制約の

void connect (int startID, 
       int startSide, 
       int endID, 
       int endSide, 
       int margin) 

(マージンがポジティブでなければならない制約するマージン)

左から右に2つのビューを接続したいのであれば、このマージンは余白です。

constraintset.connect(textView.id,ConstraintSet.LEFT,previousTextViewId,ConstraintSet.RIGHT,10) 

の右に左

//その後、10は左マージンです。私は正しい?私はこのコンセプトを実装しましたが、右または左にもマージンは設定されていません。私は何が欠けていますか?

+1

更新された回答を参照してください。 – Cheticamp

答えて

2

あなたの理解は私が物事を理解する方法です。どのように動作しているかを確認する簡単な方法です。

下のレイアウトでは、の左上隅が、右下隅にtextLeftと並んでいます。 MainActivityが実行された場合、textRightは1,000pxダウン、1,000pxは右側に移動する必要があります。それは1,000ピクセル下降しますが、右には移動しません。

私はこれが顕著な問題であると信じています。これはissue reportを参照してください。

回避策はわかりませんが、これはバグかもしれないと私は驚いています。誰かがエラーを見た場合、私は訂正して喜んでいます。

two_text_views.xml

<?xml version="1.0" encoding="utf-8"?> 
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/layout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <TextView 
     android:id="@+id/textLeft" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="8dp" 
     android:text="TextView1" 
     app:layout_constraintTop_toTopOf="parent" 
     app:layout_constraintStart_toStartOf="parent" 
     android:layout_marginStart="8dp" /> 

    <TextView 
     android:id="@+id/textRight" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="TextView2" 
     android:layout_marginTop="0dp" 
     app:layout_constraintTop_toBottomOf="@+id/textLeft" 
     app:layout_constraintStart_toEndOf="@+id/textLeft" 
     android:layout_marginStart="0dp" /> 
</android.support.constraint.ConstraintLayout> 

**MainActivity.java** 

public class MainActivity extends AppCompatActivity { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     ConstraintLayout layout; 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.two_text_views); 

     ConstraintSet constraints = new ConstraintSet(); 
     constraints.clone(layout); 
     constraints.connect(R.id.textRight, ConstraintSet.LEFT, R.id.textLeft, ConstraintSet.RIGHT, 1000); 
     constraints.connect(R.id.textRight, ConstraintSet.TOP, R.id.textLeft, ConstraintSet.BOTTOM, 1000); 
     constraints.applyTo(layout); 
    } 
} 

EDITだから、ここで修正です。 ConstraintSet.LEFTConstraintSet.RIGHTの代わりにConstraintSet.STARTConstraintSet.ENDを使用してください。私はちょうどそれを試して、それは正常に動作します。私はなぜ左右がうまくいかないのか言うことができません。