如果我知道座標(X,Y)像素(通過OnTouchEvent方法和getX(),getY)我怎麼能找到元素ex。按鈕或文本等......使用X,Y如何在座標x,y查看元素Android
11
A
回答
15
您可以使用每個子View的getHitRect(outRect)
並檢查該點是否位於生成的Rectangle中。這是一個快速示例。
for(int _numChildren = getChildCount(); --_numChildren)
{
View _child = getChildAt(_numChildren);
Rect _bounds = new Rect();
_child.getHitRect(_bounds);
if (_bounds.contains(x, y)
// In View = true!!!
}
希望這有助於
FuzzicalLogic
0
的Android使用dispatchKeyEvent/dispatchTouchEvent找到處理鍵/觸摸事件的右視圖,它是一個複雜的過程。由於可能有許多視圖覆蓋了(x,y)點。
但是,如果您只想找到涵蓋(x,y)點的最上面的視圖,這很簡單。
1使用getLocationOnScreen()獲取絕對位置。
2使用getWidth(),getHeight()來判斷視圖是否覆蓋(x,y)點。
3在整個視圖樹中調整視圖的級別。 (遞歸地調用getParent()或使用一些搜索方法)
4找到既涵蓋了點又具有最大級別的視圖。
4
稍微更完整的答案,接受任何ViewGroup
,並將遞歸搜索給定x,y處的視圖。
private View findViewAt(ViewGroup viewGroup, int x, int y) {
for(int i = 0; i < viewGroup.getChildCount(); i++) {
View child = viewGroup.getChildAt(i);
if (child instanceof ViewGroup) {
View foundView = findViewAt((ViewGroup) child, x, y);
if (foundView != null && foundView.isShown()) {
return foundView;
}
} else {
int[] location = new int[2];
child.getLocationOnScreen(location);
Rect rect = new Rect(location[0], location[1], location[0] + child.getWidth(), location[1] + child.getHeight());
if (rect.contains(x, y)) {
return child;
}
}
}
return null;
}
1
同樣的解決方案爲https://stackoverflow.com/a/10959466/2557258但在科特林:
fun getViewByCoordinates(viewGroup: ViewGroup, x: Float, y: Float) : View? {
(0 until viewGroup.childCount)
.map { viewGroup.getChildAt(it) }
.forEach {
val bounds = Rect()
it.getHitRect(bounds)
if (bounds.contains(x.toInt(), y.toInt())) {
return it
}
}
return null
}
相關問題
- 1. 如何在xaml頁面中設置元素的x,y座標
- 2. 座標X Y繪製Android
- 3. 使用X座標和Y座標定位元素
- 4. 如何獲取網頁中元素的x,y座標?
- 5. Java X Y座標
- 6. 計數像素座標x和y
- 7. 輸入元素生成鼠標點擊的x和y座標
- 8. Android:獲取視圖的x,y座標
- 9. android sdk set imageview x y座標
- 10. Android:獲取TextView的X和Y座標?
- 11. 查看包含X,Y座標的形狀
- 12. 獲取recyllerView中的X和Y座標查看
- 13. 如何在矩陣內輸入x,y,z座標作爲單個元素?
- 14. Matlab如何顯示x,y座標
- 15. 如何獲取JButton的(x,y)座標
- 16. 如何獲取x,y座標
- 17. 計算從像素座標cm(釐米)的x和y座標
- 18. 使用x,y座標查找佈局
- 19. JavaScript查找x和y座標
- 20. 如何在android中獲取視圖的x,y座標?
- 21. 如何在Android中獲取(x,y)圖像的座標?
- 22. 如何在Android上找到一個圓上的x,y座標
- 23. 如何在UIWebView中查找圖像的中心/ x,y座標
- 24. 硒尋找網絡使用x和y座標的元素
- 25. 獲取div元素的X和Y座標
- 26. 將元素移動到指定的X,Y座標
- 27. 添加工具提示元素的X,Y座標
- 28. (x,y)g.drawPolygon(p)的座標。
- 29. 商店X和Y座標
- 30. JavaFX-StackPane X,Y座標
我試着和它的作品。 –
工程很好,但似乎孩子可以爲空,所以需要檢查以防止NullPointerException。 –
它工作完美。 –