Java 如何以编程方式设置视图的边距?

Java 如何以编程方式设置视图的边距?,java,android,Java,Android,我是android开发的新手,我正试图为我的观点增加利润,但我一直无法让它发挥作用 这是我的密码: ConstraintLayout layout = new ConstraintLayout(this); final float scale = getResources().getDisplayMetrics().density; layout.setMinHeight((int)(100*scale)); layout.setMaxHeight((int)(100*

我是android开发的新手,我正试图为我的观点增加利润,但我一直无法让它发挥作用

这是我的密码:

ConstraintLayout layout = new ConstraintLayout(this);

    final float scale = getResources().getDisplayMetrics().density;
    layout.setMinHeight((int)(100*scale));
    layout.setMaxHeight((int)(100*scale));

    CircleImageView icon = new CircleImageView(this);
    icon.setImageResource(image);
    icon.setBorderWidth(3);

    LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams((int)(90*scale), (int)(90*scale));
    icon.setLayoutParams(layoutParams);

    ViewGroup.MarginLayoutParams marginParams = new ViewGroup.MarginLayoutParams(icon.getLayoutParams());
    marginParams.setMargins(100, 0, 0, 0);
    RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(marginParams);
    icon.setLayoutParams(params);

    layout.addView(icon);

为什么这不起作用?谢谢

您应该这样做:

LayoutParams param = new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.WRAP_CONTENT);
param.setMargins(left, top, right, bottom);
view.setLayoutParams(param);

创建图标后,应首先为其生成id:

icon.setId(View.generateViewId());
然后,删除setMargins行并将这些行添加到layout.addView(图标)下面:

我还没有测试过它,但它应该是朝着正确方向迈出的一步


让我知道情况。

Hey@在stackoverfolw.com上,如果有人的答案适合你,你应该勾选“接受”来接受答案。:)我会的。谢谢你让我知道。
ConstraintSet set = new ConstraintSet();
set.clone(layout);

set.constrainWidth(icon.getId(), (int)(90*scale));
set.constrainHeight(icon.getId(), (int)(90*scale));

set.connect(icon.getId(), ConstraintSet.TOP, ConstraintSet.PARENT_ID, ConstraintSet.TOP, 0);
set.connect(icon.getId(), ConstraintSet.START, ConstraintSet.PARENT_ID, ConstraintSet.START, 100);

set.applyTo(layout);