2016-10-28 7 views
0

Lassen Sie ein AbsoluteLayout die ganze Seite anzeigen.Positionieren von Elementen mit AbsoluteLayout

Die ui meldet die Breite als 480.

habe ich ein Label und positioniert es bei 240 Offset

 titleLabel.text = "Label"; 
     titleLabel.width = 20; 
     titleLabel.height = 20; 

     layout.addChild(titleLabel); 

     AbsoluteLayout.setLeft(titleLabel, "240"); 
     AbsoluteLayout.setTop(titleLabel, "20");` 

Erwartet es auf halbem Weg über rechts?

Aber es zeigt näher an der rechten Kante.

wenig verwirrt ...

Antwort

0

als Rechteck Unter Berücksichtigung Etikett, das setLeft wird die linke Seite des Rechtecks ​​nehmen mit der ganzen Ansicht zu vergleichen. In Ihrem Fall hat die übergeordnete Ansicht die Breite von 480 und Sie setLeft für eine untergeordnete Ansicht, die eine Beschriftung von 240 ist. Die Beschriftung wird mit der linken Seite beginnend an Position 240 gerendert, und der Rest der Beschriftung wird gezeichnet darauf bezogen.

Zum Beispiel des Etikett hat eine Breite von 50 Dann sollten Sie es 240 - 50/2 = 215 gesetzt:

AbsoluteLayout.setLeft(titleLabel, "215") 
+0

Ja ich erwarte SetLeft() mit der linken/Startkante des Blicks auf dem auf halbem Weg Punkt zu setzen (nicht zentriert) - aber wie es ist, ist die Ansicht viel näher am rechten Rand. Tatsächlich macht ein setLeft (300) - bringt den rechten Rand der Ansicht neben der rechten Seite der Seite - was ich vermute, sollte wirklich 320 sein. Könnte das ein DPI-Problem sein? – dashman

+0

Es war ein dpi-Problem. Ich habe das x durch platform.screen.mainScreen.scale geteilt und die erwartete Positionierung erhalten. Vielen Dank. – dashman

Verwandte Themen