找到ImageView的真实位置

pep*_*-pa 8 java android position imageview

我想找到一个ImageView可绘制的真实位置.目前它返回0,因为它ImageView是通过相对布局调整大小的.但是图像视图中的可绘制内容并未填充相对布局中的所有内容.它填满整个宽度,并且垂直居中,顶部和底部有空的空间.

    <RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/relative_layout_main"
    android:layout_width="wrap_content"
    android:layout_height="fill_parent"
    android:gravity="center"
    >

    <ImageView
        android:id="@+id/imageview"
        android:layout_width="match_parent"
        android:layout_height="fill_parent"
        android:src="@drawable/drawable"/>

</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

请参阅随附的屏幕截图.我正在寻找红色矩形的x和y以及它的宽度和高度.

在此输入图像描述

Mar*_*ema 10

您必须等到视图被测量.你可以使用OnGlobalLayoutListener.

imageView.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {

    public void onGlobalLayout() {
        int height = imageView.getHeight();
        int width = imageView.getWidth();
        int x = imageView.getLeft();
        int y = imageView.getTop();

        // don't forget to remove the listener to prevent being called again 
        // by future layout events:
        imageView.getViewTreeObserver().removeOnGlobalLayoutListener(this);
    }
});
Run Code Online (Sandbox Code Playgroud)

因为您ImageView填充整个屏幕,它可能会将设备的宽度设置为宽度,窗口高度设置为高度.要获取图像内部的实际宽度和高度ImageView,请将RelativeLayout高度match_parent设置为并将高度设置ImageViewwrap_content,并将ImageView's 设置layout_gavitycenter_vertical.