あなたの理解は私が物事を理解する方法です。どのように動作しているかを確認する簡単な方法です。
下のレイアウトでは、の左上隅が、右下隅に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.LEFT
とConstraintSet.RIGHT
の代わりにConstraintSet.START
とConstraintSet.END
を使用してください。私はちょうどそれを試して、それは正常に動作します。私はなぜ左右がうまくいかないのか言うことができません。
更新された回答を参照してください。 – Cheticamp