Größe von Buttons in TableLayout an Bildschirmgröße anpassen

  • Antworten:14
  • Bentwortet
Dark Blood Studios
  • Forum-Beiträge: 203

04.02.2011, 18:46:45 via Website

Hi, ich bin dabei für ein App ein Layout zu erstellen, bis jetzt sieht es so aus:



1<?xml version="1.0" encoding="utf-8"?>
2<ScrollView xmlns:android=
3"http://schemas.android.com/apk/res/android"
4android:orientation="horizontal"
5android:layout_width="fill_parent"
6android:layout_height="fill_parent">
7<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
8 android:orientation="horizontal"
9 android:layout_width="fill_parent"
10 android:layout_height="fill_parent">
11 <TableRow android:id="@+id/tableRow1" android:layout_width="fill_parent" android:layout_height="wrap_content">
12 <Button android:id="@+id/button11" android:layout_width="fill_parent" android:text="Button" android:layout_height="fill_parent"></Button>
13 <Button android:id="@+id/button12" android:layout_width="fill_parent" android:text="Button" android:layout_height="fill_parent"></Button>
14 <Button android:id="@+id/button13" android:layout_width="fill_parent" android:text="Button" android:layout_height="fill_parent"></Button>
15 <Button android:id="@+id/button14" android:layout_width="fill_parent" android:text="Button" android:layout_height="fill_parent"></Button>
16 <Button android:id="@+id/button15" android:layout_width="fill_parent" android:text="Button" android:layout_height="fill_parent"></Button>
17 <Button android:id="@+id/button16" android:layout_width="fill_parent" android:text="Button" android:layout_height="fill_parent"></Button>
18 </TableRow>
19 <TableRow android:id="@+id/tableRow2" android:layout_width="fill_parent" android:layout_height="wrap_content">
20 <Button android:id="@+id/button21" android:layout_width="fill_parent" android:text="Button" android:layout_height="fill_parent"></Button>
21 <Button android:id="@+id/button22" android:layout_width="fill_parent" android:text="Button" android:layout_height="fill_parent"></Button>
22 <Button android:id="@+id/button23" android:layout_width="fill_parent" android:text="Button" android:layout_height="fill_parent"></Button>
23 <Button android:id="@+id/button24" android:layout_width="fill_parent" android:text="Button" android:layout_height="fill_parent"></Button>
24 <Button android:id="@+id/button25" android:layout_width="fill_parent" android:text="Button" android:layout_height="fill_parent"></Button>
25 <Button android:id="@+id/button26" android:layout_width="fill_parent" android:text="Button" android:layout_height="fill_parent"></Button>
26 </TableRow>
27 <TableRow android:id="@+id/tableRow3" android:layout_width="fill_parent" android:layout_height="fill_parent">
28 <Button android:id="@+id/button31" android:layout_width="fill_parent" android:text="Button" android:layout_height="fill_parent"></Button>
29 <Button android:id="@+id/button32" android:layout_width="fill_parent" android:text="Button" android:layout_height="fill_parent"></Button>
30 <Button android:id="@+id/button33" android:layout_width="fill_parent" android:text="Button" android:layout_height="fill_parent"></Button>
31 <Button android:id="@+id/button34" android:layout_width="fill_parent" android:text="Button" android:layout_height="fill_parent"></Button>
32 <Button android:id="@+id/button35" android:layout_width="fill_parent" android:text="Button" android:layout_height="fill_parent"></Button>
33 <Button android:id="@+id/button36" android:layout_width="fill_parent" android:text="Button" android:layout_height="fill_parent"></Button>
34 </TableRow>
35 <TableRow android:id="@+id/tableRow4" android:layout_width="fill_parent" android:layout_height="fill_parent">
36 <Button android:id="@+id/button41" android:layout_width="fill_parent" android:text="Button" android:layout_height="fill_parent"></Button>
37 <Button android:id="@+id/button42" android:layout_width="fill_parent" android:text="Button" android:layout_height="fill_parent"></Button>
38 <Button android:id="@+id/button43" android:layout_width="fill_parent" android:text="Button" android:layout_height="fill_parent"></Button>
39 <Button android:id="@+id/button44" android:layout_width="fill_parent" android:text="Button" android:layout_height="fill_parent"></Button>
40 <Button android:id="@+id/button45" android:layout_width="fill_parent" android:text="Button" android:layout_height="fill_parent"></Button>
41 <Button android:id="@+id/button46" android:layout_width="fill_parent" android:text="Button" android:layout_height="fill_parent"></Button>
42 </TableRow>
43 <TableRow android:id="@+id/tableRow5" android:layout_width="fill_parent" android:layout_height="fill_parent">
44 <Button android:id="@+id/button51" android:layout_width="fill_parent" android:text="Button" android:layout_height="fill_parent"></Button>
45 <Button android:id="@+id/button52" android:layout_width="fill_parent" android:text="Button" android:layout_height="fill_parent"></Button>
46 <Button android:id="@+id/button53" android:layout_width="fill_parent" android:text="Button" android:layout_height="fill_parent"></Button>
47 <Button android:id="@+id/button54" android:layout_width="fill_parent" android:text="Button" android:layout_height="fill_parent"></Button>
48 <Button android:id="@+id/button55" android:layout_width="fill_parent" android:text="Button" android:layout_height="fill_parent"></Button>
49 <Button android:id="@+id/button56" android:layout_width="fill_parent" android:text="Button" android:layout_height="fill_parent"></Button>
50 </TableRow>
51 <TableRow android:id="@+id/tableRow6" android:layout_width="fill_parent" android:layout_height="fill_parent">
52 <Button android:id="@+id/button61" android:layout_width="fill_parent" android:text="Button" android:layout_height="fill_parent"></Button>
53 <Button android:id="@+id/button62" android:layout_width="fill_parent" android:text="Button" android:layout_height="fill_parent"></Button>
54 <Button android:id="@+id/button63" android:layout_width="fill_parent" android:text="Button" android:layout_height="fill_parent"></Button>
55 <Button android:id="@+id/button64" android:layout_width="fill_parent" android:text="Button" android:layout_height="fill_parent"></Button>
56 <Button android:id="@+id/button65" android:layout_width="fill_parent" android:text="Button" android:layout_height="fill_parent"></Button>
57 <Button android:id="@+id/button66" android:layout_width="fill_parent" android:text="Button" android:layout_height="fill_parent"></Button>
58 </TableRow>
59 <TableRow android:id="@+id/tableRow7" android:layout_width="fill_parent" android:layout_height="fill_parent">
60 <Button android:id="@+id/button71" android:layout_width="fill_parent" android:text="Button" android:layout_height="fill_parent"></Button>
61 <Button android:id="@+id/button72" android:layout_width="fill_parent" android:text="Button" android:layout_height="fill_parent"></Button>
62 <Button android:id="@+id/button73" android:layout_width="fill_parent" android:text="Button" android:layout_height="fill_parent"></Button>
63 <Button android:id="@+id/button74" android:layout_width="fill_parent" android:text="Button" android:layout_height="fill_parent"></Button>
64 <Button android:id="@+id/button75" android:layout_width="fill_parent" android:text="Button" android:layout_height="fill_parent"></Button>
65 <Button android:id="@+id/button76" android:layout_width="fill_parent" android:text="Button" android:layout_height="fill_parent"></Button>
66 </TableRow>
67</TableLayout>
68</ScrollView>

Ich möche aber dass die Buttons sich in der Höhe und Breite an den Bildschirm anpassen, so dass alle Buttons vollständig auf dem Bildschirm sind und nicht gescrollt werden muss.

Antworten
Leo K.
  • Forum-Beiträge: 56

04.02.2011, 19:03:23 via Website

Ich hab da auch keine funktion für, ich rufe im onCreate eine Funktion auf die mir alles dem Bildschirm anpasst
1final int width_px = display.getWidth();
2final int height_px = display.getHeight();
3
4LayoutParams lp = new LinearLayout.LayoutParams(Integer.valueOf((width_px-20)/2), Integer.valueOf(height_px*5/24), 0);
5but1.setLayoutParams(lp)
6;
...
Naja bei dir wenn du keine margins hast (n1=Anzahl der Buttons horizontal; n2=Anzahl der Buttons vertical):

1final int width_px = display.getWidth();
2final int height_px = display.getHeight();
3
4LayoutParams lp = new LinearLayout.LayoutParams(Integer.valueOf((width_px)/n1), Integer.valueOf(height_px/n2), 0);
5//und dann halt die LayoutParams bei allen Buttons so setzen...

naja vil. hilfts
mfg Leo

Antworten
Ansgar M
  • Forum-Beiträge: 1.544

04.02.2011, 19:11:07 via App

Da hilft die Einstellung android:layout_weight, am besten auf 1 stellen. Achtung, width/height auf wrap_content stellen.
Lg Ansgar

Antworten
Dark Blood Studios
  • Forum-Beiträge: 203

04.02.2011, 19:53:39 via Website

Ansgar M
Da hilft die Einstellung android:layout_weight, am besten auf 1 stellen. Achtung, width/height auf wrap_content stellen.
Lg Ansgar
Wenn ich irgendwo bei "android:layout_weight" 1 hin schreibe gibt es eine Fehlermeldung.


Leo Knoll
Ich hab da auch keine funktion für, ich rufe im onCreate eine Funktion auf die mir alles dem Bildschirm anpasst
1final int width_px = display.getWidth();
2final int height_px = display.getHeight();
3
4LayoutParams lp = new LinearLayout.LayoutParams(Integer.valueOf((width_px-20)/2), Integer.valueOf(height_px*5/24), 0);
5but1.setLayoutParams(lp)
6;
...
Naja bei dir wenn du keine margins hast (n1=Anzahl der Buttons horizontal; n2=Anzahl der Buttons vertical):

1final int width_px = display.getWidth();
2final int height_px = display.getHeight();
3
4LayoutParams lp = new LinearLayout.LayoutParams(Integer.valueOf((width_px)/n1), Integer.valueOf(height_px/n2), 0);
5//und dann halt die LayoutParams bei allen Buttons so setzen...

naja vil. hilfts
mfg Leo

Durch die Methode "setLayoutParams(lp)" kommt immer die Fehlermeldung, dass das App beendet werden muss.


Gibt es denn sonst noch eine Art eine Tabelle mit anklickbaren Componenten zu erstellen die auch optisch gut aussieht? Am liebsten wäre mir etwas das etwa wie die Tabelle im Kalender aussieht:

Der durchsichtige Hintergrund muss nicht sein.

Antworten
Ansgar M
  • Forum-Beiträge: 1.544

04.02.2011, 20:31:35 via App

Poster doch mal die Fehlermeldung, dann kann man helfen :grin:
Lg Ansgar

Antworten
Dark Blood Studios
  • Forum-Beiträge: 203

04.02.2011, 20:44:57 via Website

Tut uns leid!

Die Anwendung Kalender (Prozess de.darkbloodstudios.calender) wurde unerwartet beendet. Versuchen Sie es erneut.

[Schließen erzwingen]

Antworten
Markus Gu
  • Forum-Beiträge: 2.644

04.02.2011, 20:49:22 via Website

Death Overlord
Tut uns leid!

Die Anwendung Kalender (Prozess de.darkbloodstudios.calender) wurde unerwartet beendet. Versuchen Sie es erneut.

[Schließen erzwingen]

das ist keine fehlermeldung eines entwicklers => logcat

swordiApps Blog - Website

Antworten
Dark Blood Studios
  • Forum-Beiträge: 203

04.02.2011, 20:55:46 via Website

Sorry, ich hab gerade erst angefangen mit dem Apps für Android zu programmieren.

Meinst du das:

[2011-02-04 20:41:29 - Kalender] ActivityManager: Unable to chmod /data/nv/FRStatus.txt: Operation not permitted
[2011-02-04 20:41:29 - Kalender] ActivityManager: Unable to chmod /data/nv/factoryreset_ongoing.txt: Operation not permitted
[2011-02-04 20:41:29 - Kalender] ActivityManager: cannot create /data/reboot_enable_menu/reboot_enable_menu: permission denied
[2011-02-04 20:41:29 - Kalender] ActivityManager: scandir: Permission denied
[2011-02-04 20:41:29 - Kalender] ActivityManager: cannot create /sys/module/pm2/parameters/hidden_reset: permission denied
[2011-02-04 20:41:30 - Kalender] ActivityManager: Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=de.darkbloodstudios.calender/.Main }

Antworten
Ansgar M
  • Forum-Beiträge: 1.544

04.02.2011, 21:36:52 via App

Nicht ganz, geh mal auf den Reiter DDMS in Eclipse, da ist die(?) Logcat. mit Log.v("test","log"); kannst du da auch selbst 'reinschreiben' :)
Lg Ansgar

Antworten
Dark Blood Studios
  • Forum-Beiträge: 203

04.02.2011, 22:11:12 via Website

Antworten
Markus Gu
  • Forum-Beiträge: 2.644

04.02.2011, 22:37:20 via Website

und jetzt suchst du dort nach roten zeilen und da steht eine fehler beschreibung.

die app läuft noch nicht, aber admob sdk ist schon integriert ;) hehe

swordiApps Blog - Website

Antworten
Dark Blood Studios
  • Forum-Beiträge: 203

04.02.2011, 23:04:06 via Website

Ald Fehler wird "Could not open '/sys/class/power_supply/battery/batt_temp'" angegeben. Aber was hatr die Battery denn mit dem Layout zu tun?

Antworten
Ansgar M
  • Forum-Beiträge: 1.544

04.02.2011, 23:33:48 via App

Vielleicht ist das gar nicht dein Fehler. Scroll am besten ganz nach unten und erzeug dann den Fehler erneut, dann trifft man die Fehlermeldung eigentlich ganz gut.
Lg Ansgar

Antworten
Gian U.
  • Forum-Beiträge: 117

05.02.2011, 16:19:30 via Website

Ich würd nicht jeden einzelnen Button im Layout definieren, sondern eine GridView einsetzen. Schau dir dazu das mal an: Hello, GridView

Mnemono - Efficient learning!

Antworten
Dark Blood Studios
  • Forum-Beiträge: 203

09.02.2011, 22:01:14 via Website

Ich hab jetzt einfach nochmal ein neues Project erstellt und jetzt kommt keine Fehlermeldung mehr. Anscheinend habe ich irgendwo an eine anderen Stelle einen Fehler gehabt.

Nur leider ändert sich trotzdem nichts an der Größe der Buttons.

EDIT:

Irgendwie habe ich es jetzt doch hin bekommen die Größe der Buttons zu verändert.

Jetzt habe ich nur noch ein Problem, wo bekomme ich die Bildschirmauflösung her? Leo Knoll hat ja irgendein Objekt über das er die Höhe und Breite bekommt, aber wo bekomme ich das her?

EDIT: Es funktioniert jetzt alles, danke nochmal für die Hilfe.

— geändert am 12.02.2011, 22:40:21

Antworten