如何在动态添加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>
您需要更多详细信息来帮助我吗?请问,我也可以发布代码,但我必须先清理它,我明天可以做,同时请给我一些建议。
答案 0 :(得分:0)
在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);
查看所有规则的here。