constraint set connect中的margin是什么意思
What is meaning of margin in constraint set connect
constraint set connect官方文档说: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)
要约束的边距(边距必须是正数)
根据我的理解,如果我想从左到右连接两个视图,那么这个边距就是左边距。
//从左到右
constraintset.connect(textView.id,ConstraintSet.LEFT,previousTextViewId,ConstraintSet.RIGHT,10)
那么10就是左边距。我对吗?我已经实现了这个概念,但没有设置边距,甚至没有右边或左边。我错过了什么?
更新: 看起来这个问题已经解决了,但我还没有检查出来。见 bug report.
你的理解也是我的理解。这是检查工作情况的快速方法。
在下面的布局中,textRight
的左上角与 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);
}
}
编辑 所以,这是一个修复。使用 ConstraintSet.START
和 ConstraintSet.END
而不是 ConstraintSet.LEFT
和 ConstraintSet.RIGHT
。我刚刚试过了,它工作正常。说不出为什么左右不行
constraint set connect官方文档说: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)
要约束的边距(边距必须是正数)
根据我的理解,如果我想从左到右连接两个视图,那么这个边距就是左边距。
//从左到右
constraintset.connect(textView.id,ConstraintSet.LEFT,previousTextViewId,ConstraintSet.RIGHT,10)
那么10就是左边距。我对吗?我已经实现了这个概念,但没有设置边距,甚至没有右边或左边。我错过了什么?
更新: 看起来这个问题已经解决了,但我还没有检查出来。见 bug report.
你的理解也是我的理解。这是检查工作情况的快速方法。
在下面的布局中,textRight
的左上角与 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);
}
}
编辑 所以,这是一个修复。使用 ConstraintSet.START
和 ConstraintSet.END
而不是 ConstraintSet.LEFT
和 ConstraintSet.RIGHT
。我刚刚试过了,它工作正常。说不出为什么左右不行