2011-01-05 3 views
6

Ich habe LinearLayout in TableRow. Der Linearlayout im Code ausgelöst bekommen, auf diese Weise:match_parent füllt Eltern nicht!

LinearLayout mainRowLayout = new LinearLayout(this); 
mainRowLayout.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT)); 
TableRow tr = new TableRow(this); 
tr.addView(mainRowLayout); 

Das Problem ist, dass das Linearlayout nicht die übergeordnete füllt (die die TableRow ist). Die angehängten Bilder zeigen das Problem, wie es im Android hirarchyViewer gezeigt wird (Die grünen Rechtecke sind meine Marken).

"LinearLayout image"

Dank.

Antwort

13

Beim programmgesteuerten Erstellen von Layouts müssen Sie dem übergeordneten Container die Layoutanweisungen für das untergeordnete Element zuweisen.

// child element 
LinearLayout mainRowLayout = new LinearLayout(this); 

// parent element 
TableRow tr = new TableRow(this); 

// parent element's instructions (layout params for main row) 
TableRow.LayoutParams lopForMainRow = new TableRow.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT); 

tr.addView(mainRowLayout, lopForMainRow); 

Give it a go:]