Hallo ich habe den Versuch gestartet, das BorderLayout für Android umzusetzen. Doch leider will dieses nicht so, wie ich will... :bahnhof:
Weil Schlingel mich darauf hinwies, ViewGroups nicht zu tief zu verschachteln, habe ich das BorderLayout aber in zwei separate Komonenten aufgeteilt:
Dabei sollen, wie beim BorderLayout von Swing, die äußeren Container die enthaltenen Views eng umschließen und den restlichen Platz dem mittleren Container überlassen. Die Klasse selber wiederum soll den maximal verfügbaren Raum einnehmen (FILL_PARENT).
Wenn ich meine Klasse einsetze, dann wird aber nur die View im linken Container angezeigt. - Den Rest des Platzes nimmt der mittlere Container ein. Dabei wird dieser mittlere Container umgebrochen, auch wenn er gar keine eigenen Views beinhaltet! Wenn ich die View aus dem rechten Container entferne, dann verschwindet dieser Umbruch.
Hier der Code:
Kann mir hier jemand helfen?
Weil Schlingel mich darauf hinwies, ViewGroups nicht zu tief zu verschachteln, habe ich das BorderLayout aber in zwei separate Komonenten aufgeteilt:
- BorderRowsLayout
- BorderColsLayout
Dabei sollen, wie beim BorderLayout von Swing, die äußeren Container die enthaltenen Views eng umschließen und den restlichen Platz dem mittleren Container überlassen. Die Klasse selber wiederum soll den maximal verfügbaren Raum einnehmen (FILL_PARENT).
Wenn ich meine Klasse einsetze, dann wird aber nur die View im linken Container angezeigt. - Den Rest des Platzes nimmt der mittlere Container ein. Dabei wird dieser mittlere Container umgebrochen, auch wenn er gar keine eigenen Views beinhaltet! Wenn ich die View aus dem rechten Container entferne, dann verschwindet dieser Umbruch.
Hier der Code:
Java:
public class BorderColsLayout extends LinearLayout {
public static final long LEFT = BorderStandardLayout.LEFT;
public static final long CENTER = BorderStandardLayout.CENTER;
public static final long RIGHT = BorderStandardLayout.RIGHT;
private LinearLayout leftCol = null;
private LinearLayout centerCol = null;
private LinearLayout rightCol = null;
public BorderColsLayout(Context context) {
super(context);
leftCol = new LinearLayout(context);
centerCol = new LinearLayout(context);
rightCol = new LinearLayout(context);
this. setOrientation( HORIZONTAL );
leftCol. setOrientation( VERTICAL );
centerCol.setOrientation( VERTICAL );
rightCol. setOrientation( VERTICAL );
this. setLayoutParams( new LinearLayout.LayoutParams( FILL_PARENT, FILL_PARENT ) );
leftCol. setLayoutParams( new LinearLayout.LayoutParams( WRAP_CONTENT, FILL_PARENT ) );
centerCol.setLayoutParams( new LinearLayout.LayoutParams( FILL_PARENT, FILL_PARENT ) );
rightCol. setLayoutParams( new LinearLayout.LayoutParams( WRAP_CONTENT, FILL_PARENT ) );
leftCol. setWeightSum(0);
centerCol.setWeightSum(1);
rightCol. setWeightSum(0);
this.addView( leftCol );
this.addView( centerCol );
this.addView( rightCol );
}
public void addView(View child, long container) {
switch( (int)container ) {
case (int)LEFT: leftCol. addView(child); break;
case (int)CENTER: centerCol.addView(child); break;
case (int)RIGHT: rightCol. addView(child); break;
}
}
}
Kann mir hier jemand helfen?