German Label Höhe auslesen

mw71

Active Member
Licensed User
Hallo,

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??
 

klaus

Expert
Licensed User
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.
 

mw71

Active Member
Licensed User
Hallo Klaus,

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
(L ist ein Label)

Leider funktioniert das bei mir (noch) nicht.
 

klaus

Expert
Licensed User
Ich habe ähnliches probiert, mit 'getHeight' was ja deine Frage war, funktioniert aber nicht, der Rückgabewert = 0.
Ich habe nur den Eindruck das es nicht "sauber" funktioniert, daher habe ich das so probiert.
Und wie bekommst du diesen Eindruck?
Hast du Beispiele die das bestätigen?
 

mw71

Active Member
Licensed User
Hallo,

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.
 

klaus

Expert
Licensed User
Jetzt die Grundfrage!
Wo zu brauchst Du die Höhe?
Der Eindruck kommt daher das ich, nach dem ich die Breite (bzw. Höhe) ermittelt habe ...
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.
 

mw71

Active Member
Licensed User
Hallo,

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 :rolleyes:).
 

pucki

Active Member
Licensed User
Mal eine Frage dazu.

Wie ist der Befehl wenn man zu Laufzeit (beim Start) die Auflösung des Gerätes herausfinden will.

Gruß

Pucki
 

klaus

Expert
Licensed User
GetLayoutValues.ApproximateScreenSize ungefähere Bildschirmgrösse in Zoll
GetLayoutValues.Width Bildschirmbreite in Pixel (Effektive Werte keine dip-Werte)
GetLayoutValues.Height Bildschirmhöhe in Pixel
GetLayoutValues.Scale Bildschirmskala (1 = 160 Pixel/Zoll, 1.5 = 240 Pixel/Zoll, usw)
 

pucki

Active Member
Licensed User
Wow. VIELEN DANK

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. ;)

Gruß

Pucki
 
Top