Titan: Erstellen einer Ansicht mit dynamischer Höhe
Ich lief in einige Probleme, wenn Sie versuchen, eine Ansicht zu erstellen, die mit einer dynamischen Höhe.
"post_comment" ist mein label, wo der text angezeigt werden. Die Länge von text muss dynamisch sein, und die "containComment" - Ansicht anpassen, um die Höhe in der Lage sein, um dieses label.
var post_comment = Titanium.UI.createLabel({
color:'#000',
text:L(randomText),
top:10,
bottom:30,
left:4,
width:220,
height:'auto',
font: { fontSize:11 },
});
var comment_height = 100;
post_comment.addEventListener('postlayout', function(e) {
comment_height = e.source.rect.height;
alert(comment_height); <--------- 1
});
var containComment = Titanium.UI.createView({
layout :'horizontal',
contentWidth:'100%',
height: comment_height,
});
alert(comment_height); <-------- 2
Ich verwendet postlayout, um die Höhe, aber für einige Grund ich kann nicht den gleichen Wert außerhalb der Funktion.
Getestet habe ich die "comment_height", die an 2 Orten angezeigt durch die Pfeile. In 1, die Höhe angezeigt wird, korrekt zu sein. Aber bei 2, die Höhe ist immer der default-Wert von 100. Ich dachte, es war wegen "comment_height" nicht global, deshalb schickte ich es an den Kopf der Skript, aber es immer noch nicht das Problem zu beheben.
Jede mögliche Hilfe würde geschätzt.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist meisten einfach nur durch die Vermietung der Blick auf auto-Größe. Wenn Sie sehen, dieser code tut es was du willst:
Jedoch, Sie können nicht Lesen den Höhe-Wert aus der Ansicht, wenn es fertig ist wie in diesem. I. e containComment.Höhe wird nicht geben Sie einen Wert ein.
Wenn Sie wirklich brauchen, die Zahl, den Wert der Höhe die einzige Möglichkeit, die ich kenne, ist, es zu konvertieren, um ein Bild und Lesen Sie dann die Größe des Bildes:
Hoffe, das hilft
console.log('[containComment] height = ') + containComment;
um Ihren code, bevorwin.open();
, wird der Wert zurückgegeben werden würdeSIZE
. Nicht gerade das, was man erwarten würde.