LinearLayout dynamisch erstellt - Elemente werden nicht angezeigt

  • 2 Antworten
  • Neuster Beitrag
J

J4y

Neues Mitglied
Threadstarter
Hallo alle miteinander,

ich möchte eine ViewGroup dynamisch erstellen und versuche daher, das Layout direkt in Java zu erzeugen.
Das ist momentan mein Code:
Code:
public class MyActivityextends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        
        LinearLayout layout = new LinearLayout(this);
        layout.setOrientation(LinearLayout.VERTICAL);
        layout.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
        
        
        TextView titleView = new TextView(this);
        titleView.setWidth(LayoutParams.WRAP_CONTENT);
        titleView.setHeight(LayoutParams.WRAP_CONTENT);
        titleView.setTextAppearance(this, android.R.attr.textAppearanceLarge);
        titleView.setText("Hallo Welt!");
        layout.addView(titleView);
       
        setContentView(layout);

    }
}
Wenn ich das so starte, wird allerdings der TextView nicht angzeigt.
Der Bildschirm ist da und auf der Konsole werden keine Fehler geworfen.

Weiß jemand Rat?
 
T

Tom299

Stammgast
Hmm, ich hab jetzt etwas rumprobiert, aber bei mir passiert auch nichts.

Wenn man layout.addView(titleView, 120, 80) verwendet (also explizite
größenangabe), funktioniert es. Aber wieso, ka ...
 
J

J4y

Neues Mitglied
Threadstarter
Hey,

ich hab die Antwort mittlerweile gefunden.
WRAP_CONTENT und FILL_PARENT sind keine Längenangaben und werden daher auch nicht über setWidth bzw. setSize gesetzt. Es sind ja nur Konstanten von daher haben die Wahrscheinlich immer eine Länge oder Höhe von 1 oder so definiert.
Stattdessen muss man sie über
Code:
LayoutParams params = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
nameView.setLayoutParams(params);
festlegen.
Aber danke für die Antwort! :)
 
Oben Unten