ich habe die (schöne) "Funktion" -2 gefunden um ein Label in der Größe automatisch an die Größe des Textes anzupassen. Das funktioniert auch wunderbar.
Mein Problem ist nun, das ich danach die (automatisch eingestellte) Höhe nicht mehr auslesen kann, ich bekomme immer -2 zurück.
Gibt es eine Möglichkeit die (vom System eingestellte Höhe) zu ermitteln??
Diese Frage wurde HIER im Englischen Forum gestellt.
Und di Antwort von Erel.
Die Höhe nicht auf -2 setzten, sondern die Höhe mit StringUtils.MeasureMultilineTextHeight rechnen.
danke für deine Antwort. Die im Link beschriebene Lösung mit StringUtils kenne ich und habe ich auch schon verwendet.
Ich habe nur den Eindruck das es nicht "sauber" funktioniert, daher habe ich das so probiert.
Ich bin noch über folgenden Code gestolpert:
B4X:
Public Sub Measure
Dim Layout As JavaObject = AsJO(L).RunMethod("getLayout",Null)
Log(Layout.RunMethod("getWidth",Null))
End Sub
Sub AsJO(JO As JavaObject) As JavaObject
Return JO
End Sub
Wenn ich ihn auf -2 setze, funktioniert das Autosize zwar wunderbar, aber der Rückgabewert, wenn ich die Höhe auslesen will, ist -2.
Der Eindruck kommt daher das ich, nach dem ich die Breite (bzw. Höhe) ermittelt habe, noch einen Offset dazurechnen muss. Soweit noch
kein Problem, aber ich muss damit es ähnlich aussieht (der Padding bei allen Inhalten gleich ist ?) verschiedene Offsets eintragen muss.
So zumindest mein Eindruck.
Das macht mich etwas stutzig.
Entweder du definierst du die Höhe und rechnest die Breite, das Padding muss in Betracht bezogen werden.
Oder, du definierst die Breite und rechnest die Höhe.
Ansonsten, poste ein kleines Projekt welches das Problem zeigt und wir können genauer reinschauen.
ich hab mich da etwas ungünstig ausgedrückt. Wenn ich de Höhe ermitteln lassen möchte muss ich ihn natürlich eine Breite vorgeben.
Ich habe in meiner App aber auch den Fall das ich die Breite (da ist die Höhe ja fest definiert) ermitteln muss.
Das aktuelle Problem habe ich nun ganz einfach lösen können. Ich wollte mir einen InputDialog "basteln", nun habe ich aber (wieder)gefunden das ich mit .Input einen Wert vorgeben kann (ich muss da was vor den Augen gehabt haben, dass ich das übersehen hatte ).
Dann kann ich damit (ähnlich wie ich es bei VB mache) die Objekte selbst auf die Geräte angepasst skalieren. Ich bekomme in der nächsten Zeit nämlich ein neues Handy und da soll meine Software auch drauf laufen.