【问题标题】:Android - Clarification of X,Y Coordinates and Positioning ImageView Inside RelativeLayoutAndroid - 澄清 X、Y 坐标和在 RelativeLayout 内定位 ImageView
【发布时间】:2016-06-03 14:59:01
【问题描述】:

我正在尝试确定 X、Y 坐标在 Android 中的工作方式。

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

另外,最好使用SetX()和SetY()来改变ImageView在RelativeLayout中的位置,还是Top和Left?

<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" />

【问题讨论】:

  • 您想在代码中的哪里设置 X 和 Y?
  • @Shubhank ImageView 通过动画在整个活动中改变位置。当我为 ImageView 设置 x(0) 时,RelativeLayout 父级和 ImageView 中显示的图像之间存在间隙。这让我觉得我误解了 x,y 坐标的工作原理。

标签: java c# android android-layout xamarin


【解决方案1】:

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

根据 setX 的 Android 文档,

void setX (float x)

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

这意味着 ImageView(或者更确切地说是 View)将被添加到它的父级(一个 ViewGroup),其偏移量是从默认放置视图的位置偏移 X。

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

要在相对布局中定位 ImageView,最好使用,

layout_alignParentTop
layout_alignParentLeft
layout_alignParentRight
layout_alignParentBottom
layout_centerInParent

加上像

这样的边距选项
layout_marginLeft="10dp"
layout_marginRight="10dp"
layout_marginTop="10dp"
layout_marginBottom="10dp"

【讨论】:

  • 动画呢?我希望 ImageView 离开屏幕并从左边缘出现,然后消失。使用 ObjectAnimator 使用边距显示/隐藏 ImageView 是否仍然有意义?
【解决方案2】:

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

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);

【讨论】:

  • 在为 ImageView 制作动画时最好使用此方法吗?我基本上想从屏幕的左边缘显示一个 ImageView(从屏幕开始并从左侧出现)?
  • 使用 ViewFlipper youtube.com/watch?v=E9i-5iqLEsY。这是最简单的方法
  • 嗯,这不是我要找的。我正在制作的动画需要更多的自定义,而不仅仅是像那样翻阅图像。
  • 使用 yourview.anime()
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-07-16
  • 1970-01-01
  • 2014-02-09
  • 2019-06-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多