2012-11-30 12 views

Odpowiedz

10

Jeśli chcesz mieć rozmiar okna aplikacji, możesz po prostu wywołać yourview.getHeight() i yourview.getWidth(); Ale należy wyciągnąć wnioski, aby to zadziałało.

Jeśli chcesz uzyskać wysokość zanim zostanie sporządzony można to zrobić:

https://stackoverflow.com/a/10134260/1851478

Istnieje wiele różnych przypadków/ekran widoku pomiaru, więc jeśli można być bardziej szczegółowe informacje "rzeczywisty rozmiar okna aplikacji", czy to Twoja aplikacja? Lub aplikacja na ekranie głównym ?, jakaś inna aplikacja?

Jeśli chcesz wykorzystać przestrzeń pomniejszoną o dekoracje (pasek stanu/przycisk miękki), możesz zaatakować ją również w odwrotnej kolejności, na przykład mierząc rzeczywiste wymiary ekranu (metody różnią się w zależności od interfejsu API), a następnie odjąć wysokość pasek stanu.

Przykład wysokość wyświetlacza:

((WindowManager) getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay().getHeight(); 

stan wysokość bar:

Rect rectgle= new Rect(); 
Window window= getWindow(); 
window.getDecorView().getWindowVisibleDisplayFrame(rectgle); 
int StatusBarHeight= rectgle.top; 

Albo

int statusBarHeight = Math.ceil(25 * context.getResources().getDisplayMetrics().density); 

wiele różnych sposobów, aby to zrobić.

Oczywiście potrzebujemy więcej informacji, aby uzyskać dokładniejszą odpowiedź.

+0

Dzięki jej moje wymiary aktywności jestem po. Szerokość/wysokość widoku rodzica byłaby dla mnie odpowiednia, ale zgodnie z tym, co mówisz, najpierw trzeba zobaczyć widok. –

+0

Fajnie, dobrze, że podany link powinien zrobić to za ciebie, ale możesz zignorować część o ukrywaniu po pomiarze. Alternatywnie możesz po prostu wywołać metody .getHeight() i .getWidth() po narysowaniu widoku (przykład w działaniu, które już nazwałeś setContentView (R.layout.yourview); – logray

+0

"Jeśli chcesz uzyskać wysokość, zanim zostanie narysowana, możesz zrób to: "- Następnie podajesz link do kodu, który może tylko określić wymiar PO nadejściu widoku. – AndroidDev

5

Jest to również bardzo proste:

Rect windowRect = new Rect(); 

yourView.getWindowVisibleDisplayFrame(windowRect); 

int hWindow = windowRect.bottom - windowRect.top; 
int wWindow = windowRect.right - windowRect.left; 
Powiązane problemy