我有一個TableLayout
與單元格中的意見。當其中一個視圖被觸動時,我嘗試使用view.getTop()
。問題是這是返回2
無論我按哪個視圖。 getLeft()
工程 - 它給我正確的值,但不getTop()
。 getBottom()
也以類似的方式表現,但返回122
。getTop()返回2爲TableLayout中的所有視圖
回答
問題是這是返回2無論我按哪個視圖。
的getTop/Left/Right/Bottom()
方法是相對於親本,這意味着返回的值是相對於親本邊界(其成爲座標系的軸爲子視圖)。 TableLayout
中的單元格視圖的父級爲TableRow
。該TableRow
的頂端轉換爲0
y值,通過在其中一個子項上調用getTop()
返回。在你的情況下,這是2,因爲你可能在單元格視圖中設置了小的邊距/填充。
那麼爲什麼getLeft()爲每個點返回不同的值呢?
這裏沒有什麼特別的。 TableRow
的左側轉換爲x值0
,下一個孩子的x值爲0 +前一個孩子的寬度,依此類推。因爲你只有一個孩子朝那個方向看,所以你看不到這個高度。
下面是與此相關的方法View類的文檔小報價:
「這是可能通過調用方法getLeft()和共達()前檢索視圖的位置。返回表示視圖的矩形的左邊或X座標,後者返回表示視圖的矩形的頂部或Y座標,這兩個方法都返回視圖相對於其父視圖的位置,例如,當getLeft()返回20,這意味着該視圖位於其直接父級左邊緣右側20個像素。「
你可以使用的getLocationInScreen/Window
方法中的一種,或者你可以用獲得的X父TableRow
的getTop()
值偏移細胞視圖的getTop()
值,Y值相對於TableLayout
部件。
感謝您的好解釋和抵消'getTop()'值的想法。是什麼促使我問這個問題,是因爲在這個問題上與@blackbelt進行了對話:http://stackoverflow.com/q/19615721/2442638,其中我使用了'getLocationInScreen'方法,但值仍然是錯誤的。 – RiThBo
@RiThBo該方法應該可以工作,但你可能面臨設備差異(尤其是如果你說如果在一個設備上的值是正確的)。 – Luksprog
我做了一些更多的測試,並且該方法在任何設備上都無法正常工作,因爲當我更改填充或佈局的位置時,佈局顯然會移動,但是按下的點以及我試圖獲得的座標不匹配。 – RiThBo
- 1. android .gettop()返回0.0
- 2. 按鈕getLeft()和getTop()返回0
- 3. TableLayout中的列表視圖
- 4. UIScrollSlidingPages返回所有視圖相同的視圖(最後分配的視圖)
- 5. 如何在tablelayout中添加scrool視圖?所以是顯示所有的TextView
- 6. 返回存儲過程中使用的所有表和視圖
- 7. 作爲json中的值返回視圖
- 8. TableLayout與Recycler視圖?
- 9. 只從列表視圖返回2項
- 10. filterMany for Play 2返回所有結果
- 11. 獲取所有TableRow的TableLayout
- 12. 如何返回地圖中所有鍵的所有地址值
- 13. 返回表1中的所有列和表2中的一列
- 14. Android - 將RelativeLayout中的視圖對齊到TableLayout中的視圖
- 15. 透視表返回所有空數據
- 16. android在回收視圖時回收視圖中的所有位圖
- 17. 如何清除TableLayout中的所有行?
- 18. 返回RedirectToAction不返回新的視圖
- 19. tablelayout給出滾動視圖
- 20. NSKeyedArchiver爲UIView的子視圖返回nil
- 21. 在MySQL中的視圖中不返回所有想要的行SELECT語句
- 22. 從mvc 2視圖中的複選框返回數據
- 23. Ion Auth在所有視圖上返回404
- 24. 樹視圖過濾不會返回所有文件
- 25. Laravel編輯視圖返回所有複選框檢查
- 26. 未在視圖中使用的MVC 2模型屬性返回爲空或空
- 27. Laravel返回視圖
- 28. 返回視圖(ListView)
- 29. 作爲局部視圖和JSON結果的返回視圖有什麼區別
- 30. 強制EF返回視圖中所有行的最佳方法是什麼?
這很正常,'getTop()'返回相對於父**的位置**,並且在其父項中,單元視圖從'TableRow'小部件的頂部開始(其中2最有可能是填充/邊距)。 – Luksprog
@Luksprog我有一個6x6的網格,如http://stackoverflow.com/q/19604968/2442638中的截圖所示。那麼getLeft()爲什麼會爲每個點返回一個不同的值呢?有沒有辦法獲得y值? – RiThBo