LinearLayout dynamisch erstellt - Elemente werden nicht angezeigt

J

J4y

Neues Mitglied
2
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?
 
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 ...
 
  • Danke
Reaktionen: J4y
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! :)
 

Ähnliche Themen

5
Antworten
22
Aufrufe
1.420
590239
5
L
Antworten
4
Aufrufe
1.333
lonnie9020
L
M
  • maksimilian
Antworten
3
Aufrufe
1.124
maksimilian
M
Zurück
Oben Unten