布局参数如何与约束一起使用?它们有必要吗?

问题描述 投票:0回答:0

我试图理解 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
?我试过了,但没用。

android layout constraints
© www.soinside.com 2019 - 2024. All rights reserved.