Runnable
을 사용하여 상태 표시 줄의 높이를 찾고 올바르게 출력하고 있습니다.할당 된 메서드 외부에서 개인 변수에 액세스
그러나 Runnable
의 run()
메서드 외부의 StatusBarHeight에 액세스하려면 어떻게해야합니까?
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final RelativeLayout main = (RelativeLayout) findViewById(R.id.main);
final Rect rectgle = new Rect();
final Window window = getWindow();
main.post(new Runnable() {
@Override
public void run() {
window.getDecorView().getWindowVisibleDisplayFrame(rectgle);
int StatusBarHeight = rectgle.top;
int contentViewTop = window.findViewById(
Window.ID_ANDROID_CONTENT).getTop();
int TitleBarHeight = contentViewTop - StatusBarHeight;
Log.i("ScreenDemo", "StatusBar Height= " + StatusBarHeight
+ " , TitleBar Height = " + TitleBarHeight);
}
});
}
추신 : 여기
코드의 내 작품이다 :run()
에 코드를 직접 입력하면 이 표시되고 이 반환됩니다. 아직 UI가 렌더링되지 않았으므로
도움을 주시면 감사하겠습니다. 당신이에서 onCreate() 메소드에서 액세스하려는 경우
멋진 아이디어! –
'private static'은 클래스 변수 선언입니다. 그것은 여기에 정말로 신중하지 않습니다. (좋은 아이디어도 아닙니다.) OP는 멤버 변수 만 있으면됩니다. –
실행 가능한 인터페이스 또는 스레드 클래스를 처리 할 때 정적 선언이 필요합니다 – Lucifer