partire Andorid 3.2, l'altezza della barra di stato del sistema non è incluso in altezza di DisplayMetrics, è necessario utilizzare le API non documentate (Display.getRawWidth() e Display.getRawHeight()) per ottenere la larghezza o l'altezza dello schermo fisico.
Method mGetRawW = Display.class.getMethod("getRawWidth");
Method mGetRawH = Display.class.getMethod("getRawHeight");
int nW = (Integer)mGetRawW.invoke(dp);
int nH = (Integer)mGetRawH.invoke(dp);
AGGIORNATO: Per API 13-16, è necessario utilizzare il codice sopra riportato per ottenere larghezza/altezza reali. Per API 17+, ora puoi utilizzare la nuova API pubblica, Display.getRealSize()
Cosa c'è dp in (Integer) mGetRawW.invoke (dp); E restituirà l'altezza con il menu Soft incluso. – Herry
Mi dà un'eccezione NoSuchMethodException. – DevAndroid
Che cos'è dp? Inoltre, non è stato possibile trovare entrambi i metodi (Eccezione NoSuchMethod) – Alqueraf