Wie zu verwenden GridLayout.Skillung für eine Spalte mehrere Zeilen erweitern?

Ich versuche, um dynamisch erstellen Sie eine Tabelle mit 2 Zeilen und 4 Spalten. Aber die Größe von Zeilen und Spalten in jedem Fall sollte nicht die gleichen. Vielleicht werde ich ein Bild anfügen:

Möchte ich:

Wie zu verwenden GridLayout.Skillung für eine Spalte mehrere Zeilen erweitern?

So wie ich das verstehe, wenn ich nicht verwenden XML-markup zu erreichen, dies mit einem GridLayout.Spec in setLayoutParams

Aber ich verstehe nicht, welche Parameter ich übergeben muss in GridLayout.Spec ?

Wenn ich Zusammenführen möchten, die in der ersten Spalte der ersten Zeile mit der ersten Spalte der zweiten Zeile, was soll ich angeben, in

GridLayout.LayoutParams (GridLayout.Spec rowSpec, GridLayout.Spec columnSpec)

?

und was ist Spec ?

Sah ich die Beispiele es und es aber nicht vollständig verstehen, wie es funktioniert.

Wenn im Fall von XML-markup, die ich verwenden kann layout_rowSpan und layout_columnSpan zum Zusammenführen von Zeilen oder Spalten, die dann, wie es in dynamisch?

InformationsquelleAutor MikaAll | 2016-03-10

 

One Reply
  1. 2

    Schauen Sie in diese folgenden code um das layout, das Sie suchen. Kommentare werden Hinzugefügt, um zu erklären, die Werte, die in der GridLayout.Spec Schöpfung.

    //simple grid layout with WRAP_CONTENT width and height
    GridLayout gridLayout = (GridLayout) findViewById(R.id.grid_layout);
    
    //face view takes 2 rows, 1 column -- zero index based
    GridLayout.Spec faceRow = GridLayout.spec(0, 2); //starts row 0, takes 2 rows
    GridLayout.Spec faceCol = GridLayout.spec(0); //starts col 0, takes 1 col
    
    GridLayout.Spec titleRow = GridLayout.spec(0); //starts row 0, takes 1 row
    GridLayout.Spec titleCol = GridLayout.spec(1, 3); //starts col 1, takes 3 cols
    
    GridLayout.Spec plusRow = GridLayout.spec(1); //starts row 1, takes 1 row
    GridLayout.Spec plusCol = GridLayout.spec(1); //starts col 1, takes 1 col
    
    GridLayout.Spec minusRow = GridLayout.spec(1); //starts row 1, takes 1 row
    GridLayout.Spec minusCol = GridLayout.spec(2); //starts col 1, takes 1 col
    
    GridLayout.Spec checkRow = GridLayout.spec(1); //starts row 1, takes 1 row
    GridLayout.Spec checkCol = GridLayout.spec(3); //starts col 1, takes 1 col
    
    //create the LayoutParams using our row/col for each view
    GridLayout.LayoutParams faceParams = new GridLayout.LayoutParams(faceRow, faceCol);
    faceParams.setGravity(Gravity.FILL_VERTICAL); //fill vertical so we take up the full 2 rows
    //dummy text views to fill some space
    TextView faceText = new TextView(this);
    faceText.setPadding(32, 32, 32, 32); //add some random padding to make the views bigger
    faceText.setLayoutParams(faceParams);
    faceText.setText("FACE");
    faceText.setGravity(Gravity.CENTER);
    faceText.setBackgroundColor(Color.RED);
    gridLayout.addView(faceText, faceParams);
    
    GridLayout.LayoutParams titleParams = new GridLayout.LayoutParams(titleRow, titleCol);
    titleParams.setGravity(Gravity.FILL_HORIZONTAL); //fill horizontal so we take up the full 3 columns
    TextView titleText = new TextView(this);
    titleText.setPadding(32, 32, 32, 32);
    titleText.setLayoutParams(titleParams);
    titleText.setText("TITLE");
    titleText.setGravity(Gravity.CENTER);
    titleText.setBackgroundColor(Color.BLUE);
    gridLayout.addView(titleText, titleParams);
    
    GridLayout.LayoutParams minusParams = new GridLayout.LayoutParams(minusRow, minusCol);
    TextView minusText = new TextView(this);
    minusText.setPadding(32, 32, 32, 32);
    minusText.setLayoutParams(minusParams);
    minusText.setText("MIN");
    minusText.setGravity(Gravity.CENTER);
    minusText.setBackgroundColor(Color.YELLOW);
    gridLayout.addView(minusText, minusParams);
    
    GridLayout.LayoutParams plusParams = new GridLayout.LayoutParams(plusRow, plusCol);
    TextView plusText = new TextView(this);
    plusText.setPadding(32, 32, 32, 32);
    plusText.setLayoutParams(plusParams);
    plusText.setText("PLS");
    plusText.setGravity(Gravity.CENTER);
    plusText.setBackgroundColor(Color.GREEN);
    gridLayout.addView(plusText, plusParams);
    
    GridLayout.LayoutParams checkParams = new GridLayout.LayoutParams(checkRow, checkCol);
    TextView checkText = new TextView(this);
    checkText.setPadding(32, 32, 32, 32);
    checkText.setLayoutParams(faceParams);
    checkText.setText("CHK");
    checkText.setGravity(Gravity.CENTER);
    checkText.setBackgroundColor(Color.MAGENTA);
    gridLayout.addView(checkText, checkParams);

    Hoffe, dies hilft, mit dem Verständnis der GridLayout.Spec.

    • Ich werde zu Gott beten, dass Sie zur Arbeit gegangen war in Google und schreiben Sie den developer guide . Jetzt verstehe ich wie es funktioniert ! Danke.
    • Kein problem! Wenn Sie die Antwort auf Ihre Frage, bitte markieren Sie es als Antwort akzeptiert 🙂

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.