我试图理解 Android 中的
ConstraintLayout
,但不幸的是它的行为与 Swift 中的 ConstraintLayout
有很大不同。这真的让我很困惑。
长话短说:更改下面的评论行似乎没有任何区别。即使 LayoutParams 未设置为
MATCH_CONSTRAINT
.,约束似乎总是覆盖视图大小
LayoutParams params = new LayoutParams(
LayoutParams.MATCH_PARENT,
HEIGHT
);
mView = new ConstraintLayout(getContext());
mView.setId(View.generateViewId());
mView.setLayoutParams(params);
addView(mView);
ConstraintLayout.LayoutParams cParams;
cParams = new ConstraintLayout.LayoutParams(
// ConstraintLayout.LayoutParams.WRAP_CONTENT,
// ConstraintLayout.LayoutParams.WRAP_CONTENT
// ConstraintLayout.LayoutParams.MATCH_PARENT,
// ConstraintLayout.LayoutParams.MATCH_PARENT
HEIGHT - 2*PADDING,
HEIGHT - 2*PADDING
);
mText = new TextView(getContext());
mText.setId(View.generateViewId());
mText.setText("Title");
mText.setTextSize(30);
mText.setGravity(Gravity.CENTER);
// mText.setLayoutParams(cParams);
mText.setTextColor(Color.RED);
mText.setBackgroundColor(Color.YELLOW);
mView.addView(mText);
set = new ConstraintSet();
set.connect(mText.getId(), ConstraintSet.START, ConstraintSet.PARENT_ID, ConstraintSet.START, PADDING);
set.connect(mText.getId(), ConstraintSet.TOP, ConstraintSet.PARENT_ID, ConstraintSet.TOP, PADDING);
set.connect(mText.getId(), ConstraintSet.END, ConstraintSet.PARENT_ID, ConstraintSet.END, PADDING); //Always needed
set.connect(mText.getId(), ConstraintSet.BOTTOM, ConstraintSet.PARENT_ID, ConstraintSet.BOTTOM, PADDING); //Always needed
set.applyTo(mView);
使用约束布局需要设置
LayoutParams
吗?如果是这样,为什么?
是否可以使用 LayoutParams 手动设置我的视图大小,并且只需使用
ConstrainSet.connect
两次,例如,使用 START
和 TOP
?我试过了,但没用。