将ImageView相对于彼此定位

时间:2012-02-22 20:34:18

标签: android imageview css-position

这一直困扰着我。我希望能够在一个或另一个布局中相对于彼此定位ImageViews,这并不重要。请注意,我不能使用RelativeLayout的规则,因为我想要实现的更复杂一些。一个ImageView的位置取决于另一个ImageView的位置和给定的角度。我已经尝试自己定位第一个ImageView,然后相对于已放置的第一个或另一个ImageView定位其余的ImageView。这是通过覆盖我的自定义ImageView类中的onLayout方法完成的,如下所示:

@Override
protected void onLayout(boolean changed, int left, int top, int right,
        int bottom) {

String uri = "com.foo.bar:dimen/" + size;   
int sizeResource = getResources().getIdentifier(uri, null, null);

if ( this.getId() == rel_id ){

//Position this ImageView first, the others relative to this or each other
LayoutParams p = new LayoutParams(this.getResources().getDimensionPixelSize(sizeResource),
this.getResources().getDimensionPixelSize(sizeResource));
//TODO: Remove hard coding
p.topMargin = 10;
p.leftMargin = 10;
this.setLayoutParams(p);

}
else{

//calculate x_position using the ImageView's width, height, leftMargin and a given relative angle
//calculate y_position using the ImageView's width, height, topMargin and a given relative angle

LayoutParams p = new LayoutParams(this.getResources().getDimensionPixelSize(sizeResource),
this.getResources().getDimensionPixelSize(sizeResource));   
p.topMargin = y_position;
p.leftMargin = x_position;
this.setLayoutParams(p);

}

}

现在的问题是onLayout在添加到我的LinearLayout或RelativeLayout时被调用两次,并且每次ImageView的宽度和高度每次都不同,因此定位变得错误。这与onMeasure有关吗?我该如何解决这个问题?

如果你对onMeasure,onLayout,onDraw等的“生命周期”有任何好的消息来源或解释,我会贬低它!

0 个答案:

没有答案