簡體   English   中英

android .getTop() 返回 0.0

[英]android .getTop() returns 0.0

我正在開發一個 android 鎖屏應用程序。 我從另一個線程中得到了想法,以檢查手指按下位置的坐標與我設置的圖像按鈕的坐標。

我正在嘗試使用.getTop().getLeft()獲取圖像按鈕的坐標,但兩者都返回 0.0(因為它們是浮點數,而不是整數)。

這是為什么? 我是 android 開發的新手,如果我遺漏了一些明顯的東西,我很抱歉。

另外,我在某處讀到.getTop()setContentView(R.layout.layoutname)之后將無法工作,但如果我將它放在setContentView(...)之上,那么應用程序就會崩潰。

有沒有另一種方法來獲取圖像按鈕的坐標,或者獲取表格單元格的坐標和邊界會更好/更容易嗎? 我該怎么做?

提前致謝 :)

您需要將視圖添加到布局並顯示(必須至少運行一次布局傳遞和測量傳遞。)。 此外,如此獲得的坐標是相對於視圖的直接父級的。

可以通過調用方法 getLeft() 和 getTop() 來檢索視圖的位置。 前者返回表示視圖的矩形的左坐標或 X 坐標。 后者返回表示視圖的矩形的頂部坐標或 Y 坐標。 這些方法都返回視圖相對於其父視圖的位置。 例如,當 getLeft() 返回 20 時,這意味着視圖位於其直接父級左邊緣右側 20 像素處。

imagebutton.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED);

在 imagebutton.getTop() 之前試試這個?

我在從onCreateView()onViewCreated()調用.getTop()時遇到了這個問題。 在這種狀態下,尚未繪制視圖,因此尚不知道實際坐標。

一種解決方法是使用處理程序在以下 UI 循環中讀取值:


int buttonTop;
int buttonLeft;

// ...

@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
    final ImageButton imageButton = view.findViewById(R.id.your_imagebutton_id);

    new Handler(Looper.getMainLooper()).post(() -> {
        buttonTop = imageButton.getTop(); 
        buttonLeft = imageButton.getLeft(); 
    });
}

這應該可以完成工作;)

// Your view
ImageView image = (ImageView) findViewById(R.id.image);

Rect rect = new Rect();
image;getLocalVisibleRect(rect);
Log.d("WIDTH :",String.valueOf(rect.width()));
Log.d("HEIGHT :",String.valueOf(rect.height()));
Log.d("left :",String.valueOf(rect.left));
Log.d("right :",String.valueOf(rect.right));
Log.d("top :",String.valueOf(rect.top));
Log.d("bottom :",String.valueOf(rect.bottom));`

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM