如何固定android中ImageView的位置
发布网友
发布时间:2022-05-01 18:11
我来回答
共1个回答
热心网友
时间:2022-06-20 23:04
基本都是采用继承ImageView,并提供setLocation方法,其实质是调用ImageView没有开放的setFrame方法来设置位置。通常写法如下:
class MyView extends ImageView
{
public MyView(Context context,float x,float y)
{
super(context);
setBackgroundResource(R.anim.blast);
}
// 定义一个方法,该方法用于控制MyView的显示位置
public void setLocation(int top, int left)
{
this.setFrame(left, top, left + 40, top + 40);
}
}
这样写是没有问题的,但我遇到一个问题,当ImageView更换图片(setImageBitmap)后,第一次总是出现在屏幕的左上角。这个问题我在百度上查了,没有任何人给出了答案。于是花了点时间来研究,终于有了办法。当设置setImageBitmap后,如果要改变ImageView出现的位置,必须采用设置margin的方法,
//在FrameLayout中,将view移动到指定位置。
private void moveLocation(View view, float curX, float curY) {
LayoutParams params = (LayoutParams)view.getLayoutParams();
params.leftMargin = (int) (curX);
params.topMargin = (int) (curY);
view.setLayoutParams(params);
}
同时,view的布局方式必须要设置android:layout_gravity,例如android:layout_gravity="left|top",其实设置为什么值并不重要,但一定要设置。之后,就可以调用setLocation来设置ImageView的位置了。