获取包含图像的图像视图位置

时间:2014-10-08 06:36:40

标签: android image view get position

我在获取图像视图的顶部和左侧位置时遇到问题。

我的图片视图设置在相对布局的中心。 当我使用getleft()getTop()时,我的结果是0和0。

我的布局文件是:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/rlMain"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity" >

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:scaleType="center"
        android:src="@drawable/ic_launcher" />

</RelativeLayout>

这对我来说真的很紧急。

我的问题:

我编写了一个用于移动和缩放图像视图的代码并且工作正常但在第一次单击时,图像视图位置更改为0,0我希望获得默认位置以防止在第一次单击时更改。

2 个答案:

答案 0 :(得分:1)

不确定我是否理解你的意思,但你可以尝试:

ImageView img = (ImageView) findViewById(R.id.image_view);
img.getViewTreeObserver().addOnGlobalLayoutListener(
            new ViewTreeObserver.OnGlobalLayoutListener(){

                @Override
                public void onGlobalLayout() {

                    int left = img.getLeft();
                    int top = img.getTop();
                    //Toast the height and top...
                }

            });

由于图片无法呈现在onCreate的屏幕中,因此当您致电getLeft()getTop()

时,您将始终获得0

更多解释here

修改

将imageview的布局宽度和高度设置为wrap_content

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/rlMain"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity" >

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:scaleType="center"
        android:src="@drawable/ic_launcher" />

</RelativeLayout>

答案 1 :(得分:0)

int location [] = new int [2];

rlBoard.getLocationOnScreen(位置);

您也可以使用imageview的getX和getY方法,但此方法适用于api 11