XML Layout dynamisch aus String laden?

  • Antworten:3
Gelöschter Account
  • Forum-Beiträge: 4

24.11.2011, 21:06:25 via Website

Hallo,
ich habe ein wenig etwas verrücktes vor. Meine App bekommt per Netzwerk oder sonst wo her ein Layout im XML Format und soll es dann darstellen. Ich habe einige Beispiele gefunden um ein Layout aus einer Resource zu laden, aber ich habe keine Resource sondern nur einen String.
Kann mir jemand helfen? Bin noch Anfänger ;)

Antworten
Denny Sandner
  • Forum-Beiträge: 31

25.11.2011, 21:04:45 via Website

Hallo!

Wie du schon festgestellt hast, kann man XML Layouts über Resourcen (einkompilierte XML-Files) benutzen.
Layouts kann man aber auch komplett selbst im Code erstellen.
Für dein vorhaben schau dir mal den
1LayoutInflater
und die Funktion darin
1inflate(XmlPullParser parser, ViewGroup root)
an.
Dieser kann Layouts über ein XMLParser beziehen. Im Netz findest du bestimmt was dazu.

Gruß
Denny

— geändert am 25.11.2011, 21:05:31

Antworten
Gelöschter Account
  • Forum-Beiträge: 4

26.11.2011, 14:53:37 via Website

Das sieht doch ganz vielversprechend aus. Werde ich mir mal eben alles zur Gemüte führen.
Eine weitere Frage habe ich noch, die sich nun mehr oder weniger aus dem Problem ergeben hat.
Und zwar versuche ich in einem TableLayout ein Span einzustellen. Also das ein Element über mehrere Spalten geht. Mit dem ganzen XML Kram funktioniert das ganz gut indem ich da sowas rein schreibe:
1android:layout_span="2"
Nun die interessante Frage: Wie mache ich das, wenn ich den Button nicht über XML erstelle sondern direkt mit
1Button btn = new Button(this);
erstelle?

Antworten
Gelöschter Account
  • Forum-Beiträge: 4

26.11.2011, 15:15:52 via Website

Habe das Problem gelöst:
1// ...
2 layout = new TableLayout(this);
3 // ...
4 Button btn = new Button(this);
5 btn.setText("what ever");
6 TableRow.LayoutParams rowSpanLayout = new TableRow.LayoutParams(TableRow.LayoutParams.FILL_PARENT, TableRow.LayoutParams.WRAP_CONTENT);
7 rowSpanLayout.span = 2; // setzen des span
8 parent.addView(btn, rowSpanLayout);

Antworten