Android - 澄清X,Y坐标和定位ImageView Inside RelativeLayout

时间:2016-06-03 14:59:01

标签: java c# android android-layout xamarin

我试图确定X,Y坐标在Android中是如何工作的。

如果我在RelativeLayout中有一个ImageView,那么X,Y是坐标ImageView的左上边缘还是中心?

此外,最好使用SetX()和SetY()来更改RelativeLayout或Top和Left中ImageView的位置?

<RelativeLayout
        android:id="@+id/mainView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:padding="0dp">
        <ImageView
            android:id="@+id/imageView2"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_width="wrap_content"
            android:layout_centerInParent="false"
            android:src="@drawable/img"
            android:padding="0dp"
            android:background="@android:color/transparent"
            android:visibility="visible"
            android:layout_centerVertical="false" />

2 个答案:

答案 0 :(得分:0)

setX()setY()setLeft()setRight()是Android View类上的方法,因此由ImageView继承。

根据setX的Android文档,

void setX (float x)

设置此视图的可视x位置(以像素为单位)。这相当于将translationX属性设置为传入的x值与当前left属性之间的差值。

这意味着ImageView(或更确切地说是View)将被添加到其父级(ViewGroup),其偏移量为X的偏移位置。

X和Y属性始终从顶部和左侧计算。

要将ImageView定位在relativelayout中,最好使用

layout_alignParentTop
layout_alignParentLeft
layout_alignParentRight
layout_alignParentBottom
layout_centerInParent

加上像

这样的保证金选项
layout_marginLeft="10dp"
layout_marginRight="10dp"
layout_marginTop="10dp"
layout_marginBottom="10dp"

答案 1 :(得分:-1)

您需要使用布局参数设置边距:

RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
params.setMargins(left, top, right, bottom);
Button button1;
button1.setLayoutParams(params);

此外,您可以添加一个视图如何依赖另一个视图的规则 params.addRule(RelativeLayout.ALIGN_PARENT_LEFT, RelativeLayout.TRUE);