Java [Android] Anordnung im GridLayout?

T

Tersus

Gast
Guten Tag,

ich möchte folgende Anordnung in einem GridLayout haben:

Code:
+------------+
|   Button   |
+---+--------+
| B |        |
+---+  Grid  |
| B |        |
+---+  Lay   |
| B |        |
+---+  out   |
| B |        |
+---+--------+

2 Spalten und 5 Zeilen.

In der 1. Zeile soll über beide Spalten ein Button gehen.
In den nächsten Zeilen, jeweils 1. Spalte weitere Buttons.
Und in der 2. Spalte von der 2. Zeile an bis zur letzten Zeile soll sich ein weiteres GridLayout erstrecken.

Mich interessiert, wie das sowohl in XML ausschaut, als auch programmtechnisch ohne XML.
Ergänzung ()

Keiner eine Idee? :rolleyes:

Nun ja, dumm, dass ich immer kurz nach Fragestellung selbst auf die Lösung komme.

XML (Man ersetze Button6 durch das GridLayout):
Code:
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/GridLayout1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:columnCount="2"
    android:rowCount="5"
    tools:context=".MainActivity" >

    <Button
        android:id="@+id/button1"
        android:layout_width="match_parent"
        android:layout_column="0"
        android:layout_columnSpan="2"
        android:layout_gravity="start"
        android:layout_row="0"
        android:text="Button" />

    <Button
        android:id="@+id/button2"
        android:layout_column="0"
        android:layout_gravity="start"
        android:layout_row="1"
        android:text="Button" />

    <Button
        android:id="@+id/button3"
        android:layout_column="0"
        android:layout_gravity="start"
        android:layout_row="2"
        android:text="Button" />

    <Button
        android:id="@+id/button4"
        android:layout_column="0"
        android:layout_gravity="start"
        android:layout_row="3"
        android:text="Button" />

    <Button
        android:id="@+id/button5"
        android:layout_column="0"
        android:layout_gravity="start"
        android:layout_row="4"
        android:text="Button" />

    <Button
        android:id="@+id/button6"
        android:layout_width="wrap_content"
        android:layout_column="1"
        android:layout_columnSpan="1"
        android:layout_gravity="fill"
        android:layout_row="1"
        android:layout_rowSpan="4"
        android:text="Button" />

</GridLayout>

Programmtechnisch:

Code:
public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		GridLayout gl = (GridLayout) findViewById(R.id.GridLayout1);

		// Layout für den ersten Button; Zeile 0, Spalte 0; Spalte 0 erstreckt sich über 2 Spalten
		GridLayout.LayoutParams gbll_button1 = new GridLayout.LayoutParams(GridLayout.spec(0), GridLayout.spec(0, 2));
		// Layout für den ersten Button strecken
		gbll_button1.width = GridLayout.LayoutParams.MATCH_PARENT;
		Button button1 = new Button(this);
		
		// Layout für den zweiten Button; Zeile 1, Spalte 0; Zeile 0 erstreckt sich über 2 Spalten
		GridLayout.LayoutParams gbll_button2 = new GridLayout.LayoutParams(GridLayout.spec(1), GridLayout.spec(0));
		Button button2 = new Button(this);
		
		// Layout für den dritten Button; Zeile 2, Spalte 0; Zeile 0 erstreckt sich über 2 Spalten
		GridLayout.LayoutParams gbll_button3 = new GridLayout.LayoutParams(GridLayout.spec(2), GridLayout.spec(0));
		Button button3 = new Button(this);
		
		// Layout für den vierten Button; Zeile 1, Spalte 1; Zeile 0 erstreckt sich über 3 Zeilen
		GridLayout.LayoutParams gbll_button4 = new GridLayout.LayoutParams(GridLayout.spec(1, 2), GridLayout.spec(1));
		// An dieser Stelle das Layout für den vierten Button NICHT strecken, sondern lediglich die Gravity setzen
		gbll_button4.setGravity(Gravity.FILL);
		Button button4 = new Button(this);
	
		
		// Button mit ihrem jeweiligen Layout dem GridLayout übergeben;
		
		gl.addView(button1, gbll_button1);
		gl.addView(button2, gbll_button2);
		gl.addView(button3, gbll_button3);
		gl.addView(button4, gbll_button4);
		
	}
}
 
Zuletzt bearbeitet von einem Moderator:
Zurück
Oben