Ich muss überprüfen, ob ein Gerät die Soft-Navigationsleiste hat, und ich folgte den Vorschlägen here.Erkennen Sie die Verfügbarkeit von Soft-Navigationsleisten in einem OnePlusOne-Gerät progmatisch?
Es funktioniert gut, außer auf OnePlus Geräte, aus irgendeinem Grund, dieser Code:
int id = resources.getIdentifier("config_showNavigationBar", "bool", android");
return id > 0 && resources.getBoolean(id);
false zurück, obwohl die Soft-Navigationsleiste angezeigt wird.
Jede Idee, wie kann ich das richtige Ergebnis erhalten?
Ich ziehe es vor, nicht die tatsächliche Breite und verfügbare Breite zu berechnen, es scheint wie teure Operation.
Danke.
haben Sie eine Lösung dafür bekommen? –
Ja. Schließlich habe ich diesen Code verwendet: öffentlichen boolean hasNavBar() { Anzeige d = getWindowManager(). GetDefaultDisplay(); DisplayMetrics dm = neue DisplayMetrics(); d.getRealMetrics (dm); int realHeight = dm.heightPixels; int realWidth = dm.widthPixels; d.getMetrics (dm); int displayHeight = dm.heightPixels; int displayWidth = dm.widthPixels; return (realWidth - displayWidth)> 0 || (realHeight - displayHeight)> 0; } Dies ergab das beste Ergebnis auf allen Geräten. – Sharas