Android 如何为另一个类中的视图设置边距?

Android 如何为另一个类中的视图设置边距?,android,android-layout,constructor,Android,Android Layout,Constructor,我做了一个构造函数,以编程的方式在里面设置了一些视图,并添加了一些规则。所以当我调用构造函数时,我看到了默认视图 现在我想达到这种观点,并改变设置的利润。这是基本的,我知道,但我不为我工作 有人能帮忙吗 我的构造函数的一部分: _photoImgVw = new ImageView(getContext()); _photoImgVw.setImageResource(R.drawable.pic); _photoImgVw.setAdjustViewBounds(true);

我做了一个构造函数,以编程的方式在里面设置了一些视图,并添加了一些规则。所以当我调用构造函数时,我看到了默认视图

现在我想达到这种观点,并改变设置的利润。这是基本的,我知道,但我不为我工作

有人能帮忙吗

我的构造函数的一部分:

 _photoImgVw = new ImageView(getContext());
    _photoImgVw.setImageResource(R.drawable.pic);
    _photoImgVw.setAdjustViewBounds(true);
    _photoImgVw.setMaxWidth(100);
    _photoImgVw.setId(2);


     lp2=new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
        lp2.setMargins(0,0,0,0);
        addView(_photoImgVw,lp2);


        LayoutParams lp3=new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
        lp3.addRule(RelativeLayout.RIGHT_OF,_photoImgVw.getId());
        lp3.setMargins(0,0,0,0);
        addView(_nameTxt,lp3);
调用活动进行更改:

 facebookPersonView.lp2.setMargins(10,300,100,20);

确保layout params lp2是RelativeLayout.LayoutParams类的实例,而不是MarginLayoutParams,或者它的任何其他名为LayoutParams的子类。请参阅

如果参数是后者的实例,则它们不会包含RelativeLayout的任何规则。这意味着父布局不知道将视图“”放置在何处,因此无法理解边距

最好以如下方式明确声明:

RelativeLayout.LayoutParams lp2 
                    = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT,
                                                      LayoutParams.WRAP_CONTENT);
lp2.setMargins(0,0,0,0);
addView(_photoImgVw,lp2);

它仍将使其在左上角可见,但这是一种未定义的状态。

您能提供更多详细信息吗?在这种情况下,外部布局是什么?例如,如果是框架布局,则必须设置正确的重力以使边距正常工作。我在中解释过。我们需要更多的代码,如何实例化lp2?@alexsc我的构造函数扩展了RelativeLayout。你在问这个吗?@DuyguK是的,编辑后就清楚了。谢谢。@Blundell我创建了我的构造器并命名为facebookPersonView。我想达到lp的利润率。