F FlyingEagle Member Licensed User Longtime User Oct 19, 2020 #1 Hallo, eine vermutlich einfache Geschichte, mir fällt es aber schwer hinter das Geheimnis zu kommen. Ich füge in einer Schleife Labels/Buttons zur Laufzeit ein, diese per Addview dann einem Panel (auf einer B4XPage). Panel ist per Code und Designer auf 100%x gesetzt. Ergibt per Designer geguckt im Eigenschaftenfenster eine Breite von 484. Per Designer-Script die Breite als Text angezeigt dann 1440 (Handy mit Designer verbunden, Variant = angeschlossenes Gerät). Per Code abgefragte Breite 1440. Ich möchte nun dynamisch x-L/B erstellen, diese sollen sich den Platz in der Breite teilen. Breite_Panel / Anzahl_L/B sollte das ja eigentlich machen, tut es aber nicht (?). Bspw. kommt da rechnerisch 30 raus, schreibe ich nun l/b.width = 30 kommt ein schmales Objekt raus, schreibe ich l/b.width = 30dip, dann ein deutlich breiteres. Wo ist der Hund begraben?
Hallo, eine vermutlich einfache Geschichte, mir fällt es aber schwer hinter das Geheimnis zu kommen. Ich füge in einer Schleife Labels/Buttons zur Laufzeit ein, diese per Addview dann einem Panel (auf einer B4XPage). Panel ist per Code und Designer auf 100%x gesetzt. Ergibt per Designer geguckt im Eigenschaftenfenster eine Breite von 484. Per Designer-Script die Breite als Text angezeigt dann 1440 (Handy mit Designer verbunden, Variant = angeschlossenes Gerät). Per Code abgefragte Breite 1440. Ich möchte nun dynamisch x-L/B erstellen, diese sollen sich den Platz in der Breite teilen. Breite_Panel / Anzahl_L/B sollte das ja eigentlich machen, tut es aber nicht (?). Bspw. kommt da rechnerisch 30 raus, schreibe ich nun l/b.width = 30 kommt ein schmales Objekt raus, schreibe ich l/b.width = 30dip, dann ein deutlich breiteres. Wo ist der Hund begraben?
P pucki Active Member Licensed User Longtime User Oct 19, 2020 #2 Ich empfehle dir mal diesen Thread zu lesen. Werte im Designer auslesen Gibt es eine Möglichkeit die Werte auszulesen die im Designer stehen ?? Ok die Frage muss ich erklären ;) Ich habe im Designer ein Layout gemacht (Breite = 350 // Höhe = 640) Auf dem Layout befindet sich ein LABEL_1. Wenn ich das anklicke, steht bei TOP 600 als Wert. Kann ich diesen Wert... www.b4x.com Der löst so ziemlich alle Probleme. Grund : Ich mache 2 Designs wenn nötig. Eins hoch + 1 quer. Und immer in der selben Größe. Danach lasse ich die Routinen in diesen Thread laufen und alles ist gut. Wenn man das per Laufzeit macht, muss man die Daten des Buttons (o.ä.) einfach wissen und sie bei anlegen mit FaktorX+FaktorY (Variablen sie Thread) anpassen. Das funktioniert immer. Ich hab die Grundtechnik dazu in VB entwickelt und mit Hilfe der User hier auf Android umgesetzt.
Ich empfehle dir mal diesen Thread zu lesen. Werte im Designer auslesen Gibt es eine Möglichkeit die Werte auszulesen die im Designer stehen ?? Ok die Frage muss ich erklären ;) Ich habe im Designer ein Layout gemacht (Breite = 350 // Höhe = 640) Auf dem Layout befindet sich ein LABEL_1. Wenn ich das anklicke, steht bei TOP 600 als Wert. Kann ich diesen Wert... www.b4x.com Der löst so ziemlich alle Probleme. Grund : Ich mache 2 Designs wenn nötig. Eins hoch + 1 quer. Und immer in der selben Größe. Danach lasse ich die Routinen in diesen Thread laufen und alles ist gut. Wenn man das per Laufzeit macht, muss man die Daten des Buttons (o.ä.) einfach wissen und sie bei anlegen mit FaktorX+FaktorY (Variablen sie Thread) anpassen. Das funktioniert immer. Ich hab die Grundtechnik dazu in VB entwickelt und mit Hilfe der User hier auf Android umgesetzt.
klaus Expert Licensed User Longtime User Oct 19, 2020 #3 Ohne zu wissen was Du genau gemacht hast ist es unmöglich einen konkreten Rat zu geben. Poste doch dein Projekt als zip Datei dann können wir sehen was Du wie gemacht hast und auch testen.
Ohne zu wissen was Du genau gemacht hast ist es unmöglich einen konkreten Rat zu geben. Poste doch dein Projekt als zip Datei dann können wir sehen was Du wie gemacht hast und auch testen.
Midimaster Active Member Licensed User Oct 20, 2020 #4 Mit den direkten Angaben als Zahlen, verwendest Du die wirkliche Auflösung des jeweiligen Gerätes. Ist das Gerät hochauflösend und z.b. 1440pixel breit, dann sind 30 eben sehr schmal, eben gerade mal 2% der Bildschirmbreite. Auf einem Display mit nur 320pix Breite ist alles schon viel größer. Mit den dip-Angaben als Koordinaten verwendest Du eine virtuelle Auflösung die auf den verschiedenen Geräten nahezu identisch wirkende Elemente ergibt. Ist das Gerät hochauflösend und z.b. 1440pixel breit, dann sind 30dip eben schon viel breiter, weil das Gerät 4x so gut auflöst wie ein "Ur-Display". Auf dem kleinen Display ist der Button jetzt optisch genauso groß wie auf dem großen Der Vorteil der beiden Möglichkeiten liegt darin, auch im Querformat die gleiche Buttongröße zu erhalten wie im Hochformat. Auch sehen 30dip senkrecht genauso groß aus wie 30dip waagrecht. Du weißt aber nie, ob deine Button die gesamte Bildschirmbreite füllen. Versuch doch mal mit Prozenzangaben zu arbeiten. Es gibt doch auch diese Möglichkeit: B4X: For i= 0 To 41 MyButton(i).Initialize("ButtonEvent") WoX= i mod 7 WoY= i / 7 MyPanel.AddView(MyButton(i), WoX*13%x, WoY*13%y, 12%x, 12%y) Next Du kannst auch wild kombinieren. Also z.b. die Buttons in der Breite mit Prozenzangaben dazu bringen die Bildschirmbreite zu füllen. Mit dips bei den y-Werten zwingst du sie, eine bestimmte lesbaren Größe zu haben: B4X: For i= 0 To 41 MyButton(i).Initialize("ButtonEvent") WoX= i mod 7 WoY= i / 7 MyPanel.AddView(MyButton(i), WoX*13%x, WoY*30dip, 12%x, 28dip) Next Last edited: Oct 20, 2020
Mit den direkten Angaben als Zahlen, verwendest Du die wirkliche Auflösung des jeweiligen Gerätes. Ist das Gerät hochauflösend und z.b. 1440pixel breit, dann sind 30 eben sehr schmal, eben gerade mal 2% der Bildschirmbreite. Auf einem Display mit nur 320pix Breite ist alles schon viel größer. Mit den dip-Angaben als Koordinaten verwendest Du eine virtuelle Auflösung die auf den verschiedenen Geräten nahezu identisch wirkende Elemente ergibt. Ist das Gerät hochauflösend und z.b. 1440pixel breit, dann sind 30dip eben schon viel breiter, weil das Gerät 4x so gut auflöst wie ein "Ur-Display". Auf dem kleinen Display ist der Button jetzt optisch genauso groß wie auf dem großen Der Vorteil der beiden Möglichkeiten liegt darin, auch im Querformat die gleiche Buttongröße zu erhalten wie im Hochformat. Auch sehen 30dip senkrecht genauso groß aus wie 30dip waagrecht. Du weißt aber nie, ob deine Button die gesamte Bildschirmbreite füllen. Versuch doch mal mit Prozenzangaben zu arbeiten. Es gibt doch auch diese Möglichkeit: B4X: For i= 0 To 41 MyButton(i).Initialize("ButtonEvent") WoX= i mod 7 WoY= i / 7 MyPanel.AddView(MyButton(i), WoX*13%x, WoY*13%y, 12%x, 12%y) Next Du kannst auch wild kombinieren. Also z.b. die Buttons in der Breite mit Prozenzangaben dazu bringen die Bildschirmbreite zu füllen. Mit dips bei den y-Werten zwingst du sie, eine bestimmte lesbaren Größe zu haben: B4X: For i= 0 To 41 MyButton(i).Initialize("ButtonEvent") WoX= i mod 7 WoY= i / 7 MyPanel.AddView(MyButton(i), WoX*13%x, WoY*30dip, 12%x, 28dip) Next
F FlyingEagle Member Licensed User Longtime User Oct 20, 2020 #5 Danke für die Hinweise, im Moment - und nach dem ich komplett neu angefangen habe - erscheint es mir als wenn ich irgendwo einen Bug hatte. Das ganze GUI-Gedöns erschliesst sich mir hier an der Stelle noch nicht völlig, aber denke das es langsam wird.
Danke für die Hinweise, im Moment - und nach dem ich komplett neu angefangen habe - erscheint es mir als wenn ich irgendwo einen Bug hatte. Das ganze GUI-Gedöns erschliesst sich mir hier an der Stelle noch nicht völlig, aber denke das es langsam wird.