android:在RelativeLayout中保留属性子项动态添加ImageView

android:在RelativeLayout中保留属性子项动态添加ImageView,android,android-layout,imageview,android-relativelayout,android-custom-view,Android,Android Layout,Imageview,Android Relativelayout,Android Custom View,动态添加ImageView时,如何在RelativeLayout中保留子对象的属性 我有一个自定义的ImageView,我想在运行时添加到一个空的RelativeLayout(XML中没有任何内容),我可以先添加,然后移动、缩放和旋转它们,效果很好。 当我添加另一个ImageView时,所有先前添加的实例都会失去它们的位置和大小,但当我触摸它们时,它们只会恢复它们的大小,而不是位置 在我的ImageView中,我正在覆盖onDraw和onTouch,是否需要覆盖其他内容? 也许我必须编写自己的R

动态添加ImageView时,如何在RelativeLayout中保留子对象的属性

我有一个自定义的ImageView,我想在运行时添加到一个空的RelativeLayout(XML中没有任何内容),我可以先添加,然后移动、缩放和旋转它们,效果很好。 当我添加另一个ImageView时,所有先前添加的实例都会失去它们的位置和大小,但当我触摸它们时,它们只会恢复它们的大小,而不是位置

在我的ImageView中,我正在覆盖onDraw和onTouch,是否需要覆盖其他内容? 也许我必须编写自己的RelativeLayout实现?我不会

这是用于添加新ImageView的伪代码:

create new instance of ImageView
set bitmap
set scaletype
add imageview to the RelativeLayout container
我甚至尝试为全新添加的ImageView设置一个标准布局参数,结果也是一样的。 我试图根据每个子元素的位置获取其边距,然后使用ImgeView.setLayout(l、t、r、b)重新设置布局; 没有成功

这是XML RelativeLayout容器,非常简单,可能太多了

<RelativeLayout
        android:id="@+id/face_container"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" >
</RelativeLayout>


你需要更多的细节来帮助我吗?请问,我也可以发布代码,但我必须在之前清理一下,我可以明天做,同时请给我一些建议

在相对视图中,所有视图位置都与其他视图相关。因此,正如在xml中所做的那样,应该为每个视图提供相关参数。
将imageView添加到RelativeLayout调用之前
setLayoutParams(layoutParams)

// Create a new RelativeLayout.LayoutParams instance
RelativeLayout.LayoutParams layoutParams = 
   new RelativeLayout.LayoutParams(
       RelativeLayout.LayoutParams.WRAP_CONTENT,      
       RelativeLayout.LayoutParams.WRAP_CONTENT);

// add roules
layoutParams.addRule(RelativeLayout.CENTER_IN_PARENT);
layoutParams.addRule(.........
layoutParams.addRule(.........

//add params to view
imageView.setLayoutParams(layoutParams);

//add imageview to the RelativeLayout container
yourRelativeLayout.addView(imageView);

查找所有规则。

嗨,谢谢你的回复。但如果我想重新分配他们以前的职位(添加其中一个职位会重置一切),该怎么办。你的解决方案似乎不符合我的愿望。还是我错了?在这里,您可以详细了解我的问题: