我要做的是创建一个穷人的gps地图版本。我已经设置了一张“地图”图片作为AbsoluteLayout的背景,然后创建了一个小的20x20方形图片,我需要移动到不同的坐标。我如何在Java代码中执行此操作?
<AbsoluteLayout
android:id="@+id/llMapContainer"
android:layout_width="match_parent"
android:layout_height="390dp"
android:layout_x="0dp"
android:layout_y="44dp"
android:background="@drawable/a4000vert"
android:orientation="vertical" >
<ImageView
android:id="@+id/imgLocation"
android:layout_width="20px"
android:layout_height="20px"
android:layout_x="312px"
android:layout_y="300px"
android:src="@drawable/location" />
</AbsoluteLayout>
我在Java文件中有这个设置: iv =(ImageView)findViewById(R.id.imgLocation);
但现在我似乎无法找到任何允许我设置x和y坐标的方法。
答案 0 :(得分:4)
AbsoluteLayout
已弃用,强烈建议不要使用它。您应该切换到使用其他形式的ViewGroup
,例如RelativeLayout
。
使用RelativeLayout
后,您可以使用RelativeLayout.LayoutParams
类指定子项的大小和位置(以及各种其他参数),将其添加到父RelativeLayout
。
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(100,200); // The desired size of the child
params.setMargins(50,50); // Position at 50,50
mRelativeLayout.addView( mViewToAdd, params);
答案 1 :(得分:0)
以下是如何在ImageView
内设置AbsoluteLayout
的x和y坐标:
private void setLocation(int x, int y) {
final ImageView iv = (ImageView) findViewById(R.id.imgLocation);
final AbsoluteLayout.LayoutParams lp = (AbsoluteLayout.LayoutParams) iv.getLayoutParams();
lp.x = x;
lp.y = y;
iv.setLayoutParams(lp);
}
我同意Trevor,但是如果可能的话,您可能希望避免使用AbsoluteLayout
,因为它已被弃用。