15

ImageViewプログラムで自分の位置を取得したい。ImageView.位置とは、画面の上部からスタックオーバーフローに投稿された他のすべてのソリューションを試したピクセル単位の距離を意味しますが、うまくいきません。私の最小 API レベルは 8 です。

これらは私が試したコードです-

ImageView image = (ImageView) findViewById(R.id.imageView1);
1) image.getTop();

2) private int getRelativeTop(View myView) {
    if (myView.getParent() == myView.getRootView())
        return myView.getTop();
    else
        return myView.getTop() + getRelativeTop((View) myView.getParent());
}

3) image.getLocationOnScreen(int[] locaiton);
4

3 に答える 3

50

レイアウトが子ビューで配置されている場合は、コールバックを待つ必要があります。これは、画像の座標を計算するためにルート ビューに追加する必要があるリスナーです。それ以外の場合は 0 を返します。

getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
    public void onGlobalLayout() {
        getViewTreeObserver().removeGlobalOnLayoutListener(this);

        int[] locations = new int[2];
        image.getLocationOnScreen(locations);
        int x = locations[0];
        int y = locations[1];
    }
});
于 2013-10-21T14:48:19.690 に答える
7

ビューがレイアウトされた後にのみView.getLocationOnScreen()orを使用してください。、、およびその親に対する相対的な位置を返します。getLocationInWindow() getTop()getLeft()getBottom()getRight()

于 2013-10-21T14:44:56.883 に答える