안드로이드 프로그램에서 뷰를 가져오는 위치
parent에서 상대 좌표 위치 가져오기 이것은 비교적 간단합니다. 더 말할 필요도 없이 뷰를 직접 호출하는 방법입니다. getLeft, getTop, getBottom, getRight.
화면에서 절대 위치 가져오기getLocalVisibleRect
getGlobalVisibleRect
getLocationOnScreen
getLocationInWindow
한 번은 잘 쓴 글이 있었는데, 댓글은 다음과 같다.http://www.fengfly.com/plus/view-209439-1.html)
=======================================================================
우리는view의 y 좌표를 가져오는 데 중점을 두고 있습니다. 알겠습니다.
다음 네 가지 방법에 대해 설명합니다.
1.getLocationInWindow
int[] position = new int[2];
textview.getLocationInWindow(position);
System.out.println("getLocationInWindow:" + position[0] + "," + position[1]);
이 방법은view의 왼쪽 상단 좌표를 그룹에 저장하는 것입니다.이 좌표는 현재activity에 비해
일반적인 activity라면 y 좌표는 보이는 상태 표시줄 높이 + 보이는 제목 표시줄 높이 +view 왼쪽 상단에서 제목 표시줄 밑까지의 거리입니다.
상태 표시줄/제목 표시줄을 숨긴 상태에서 그것들의 높이는 0으로 계산된다는 뜻이다.
대화상자식activity라면 y 좌표는 보이는 제목 표시줄 높이 +view 제목 표시줄 밑까지의 거리입니다.
이때는 상태막대의 유무를 무시합니다.
2.getLocationOnScreen
int[] position = new int[2];
textview.getLocationOnScreen(position);
System.out.println("getLocationOnScreen:" + position[0] + "," + position[1]);
이 방법은 위와 차이가 많지 않고view의 왼쪽 상단 좌표를 그룹에 저장합니다.그러나 이 좌표는 전체 화면에 비해
y 좌표는view 왼쪽 상단에서 화면 상단까지의 거리입니다.
3.getGlobalVisibleRect
Rect viewRect = new Rect();
textview.getGlobalVisibleRect(viewRect);
System.out.println(viewRect);
이 방법은 이view에 사용할 Rect를 구축하는 것입니다.이 Rect의 좌표는 현재 activity에 비해
일반적인 activity일 경우, Rect의 top은 보이는 상태 표시줄 높이 + 보이는 제목 표시줄 높이 + Rect의 왼쪽 상단에서 제목 표시줄 밑까지의 거리입니다.
대화상자식 activity라면 y 좌표는Rect의 top이고 보이는 제목 표시줄 높이 + Rect 왼쪽 상단에서 제목 표시줄 밑까지의 거리입니다.
이때는 상태막대의 유무를 무시합니다.
4.getLocalVisibleRect
Rect globeRect = new Rect();
button.getLocalVisibleRect(globeRect);
참고:
위의 방법은 Oncreate 방법에서 호출되어 0으로 되돌아옵니다. 이것은 View가 아직 불러오지 않았기 때문입니다.
onWindow FocusChanged 방법에서 가져오는 것을 권장합니다. 어떤 경우 onWindow FocusChanged가 좋지 않을 때 (예:Activity Group) 이렇게 쓸 수 있습니다.
mTextView.post(new Runnable() {
@Override
public void run() {
Rect viewRect = new Rect();
mTextView.getLocalVisibleRect(viewRect);
mTreeScrollView.setRect(viewRect);
}
});
이렇게 하면 View가 로드된 후에 위치를 가져오는 방법이 실행됩니다.
=======================================================================
PS: View 클래스 컨트롤을 동적으로 만드는 방법:
1. new 방법을 통해 하나의 인터페이스 대상을 만든다.
2. Layout xml 리소스를 통해 만들고 Layout Inflater가 제공하는 방법을 이용한다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.