Android: Holen Sie sich die Bildschirmgröße für die root-Layout nur
Bitte Holen Sie mich richtig hier :
Möchte ich, um die Breite/Höhe des Raumes zur Verfügung, um die Aktivität/Layout in der onCreate () - Methode zur Berechnung der Höhe gegeben werden kann, um Kind-layouts. Ich kann die Bildschirm Größe verwenden :
root = (LinearLayout) findViewById(R.id.mainroot); //Main layout of LinearLayout
android.view.Display display = getWindowManager().getDefaultDisplay();
int height = Display.getHeight(); //I know this is deprecated have hence used
int width = Display.getWidth(); //DisplayMetrics
int childWidth, childHeight;
DisplayMetrics metrics = new DisplayMetrics();
display.getMetrics(metrics);
//int density = metrics.densityDpi;
height = metrics.heightPixels; //480
width = metrics.widthPixels; //320
Diese beiden Methoden/Möglichkeiten gibt mich gleiche Höhe und Breite wie z.B. die Größe des Vollbild. Was ich Suche ist, um die tatsächliche Höhe ist avaialbe für das layout nach Abzug der Anwendung Titel, Status Bar, etc.
Irgendeine Idee, wie dieses zu erhalten. ODER, um die Größen von Titel, etc - was alles gezählt werden soll hier. Auf emulator sehe ich 2 Balken auf der Oberseite - 1 Anwendung titile, was einem auf den anderen ein. Ich kann Höhen und abziehen vom Bildschirm Höhe.
EINEN Punkt mehr : In diesem Fall werde ich die Einstellung der Höhe programamtically so wird es sein, pixel-basierte (wie kann ich setheight in Pixel nur vermute ich mal) wird, die Auswirkungen auf die in der Dichte-Faktor mit verschiedenen Bildschirm-Größen. Was kann ein Weg zur Berechnung der Höhe (sagen wir 50%) für die Kind-layout wird für jede Dichte o so.
Du musst angemeldet sein, um einen Kommentar abzugeben.
LÖSUNG :
In meiner onCreate(), habe ich noch die folgenden Zeilen :
Mit dem obigen code erhalte ich die Werte der Titelleiste & statusBar. Auf Abzug der Sie von
metrics.heightPixels;
bekomme ich die erforderliche Höhe des Bildschirms.Guter Punkt, wird dieser code funktioniert für alle Dichte ist.
Hoffe, das hilft anderen auch.
ZUR VERBESSERUNG : ich habe ähnliche Berechnungen für alle Aktivitäten in meiner Anwendung, so wurde das denken über das schreiben dieses code nur einmal. Ich kann save teh titleHeight auf eine statische variable so verwenden kann, in allen Aktivitäten.
ABER
Kann der Benutzer ändern Sie die Handy-Dichte bei runtime.
Wenn dem so ist, dann ist die Activity onCreate wird aufgerufen, wieder oder nicht ?
Wenn nicht, dann kann ich die trap-Dichte change-Ereignis, wo kann ich das hinzufügen dieser code und die aktuelle Tätigkeit zu aktualisieren.
Irgendwelche Idee, Vorschläge für die Verbesserung geschätzt wird.
run() { sRootHeight = root.getHeight(); }
wosRootHeight
ist eine statische Klassenvariable, so dass Sie Ihre anderen Aktivitäten verweisen können.//Wo rootView ist das Objekt für das root-Ansicht Ihrer Anwendung
final int viewWidt = rootView.getMeasuredWidth();
rootView.getMeasuredWidth()
innenvoid run
. Erhalten Sie die richtige Breite.