2012-09-05 12 views
12

Sto sviluppando un'applicazione "corrisponde alla seguente". Il XML utilizzati per l'applicazione è la seguente:Android: come creare un GridLayout [non GridView] a livello di programmazione?

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/lytLinear" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" > 

    <TextView 
     android:id="@+id/txtQuestion" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:paddingBottom="30dp" 
     android:text="Match the following questions with their answers." /> 

    <GridLayout 
     android:id="@+id/lytGrid" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:columnCount="3" 
     android:columnWidth="300dp" 
     android:orientation="vertical" 
     android:rowCount="5" 
     android:stretchMode="columnWidth" > 

     <LinearLayout 
      android:id="@+id/Q1Lyt" 
      android:layout_width="160dp" 
      android:layout_height="50dp" 
      android:layout_column="0" 
      android:layout_row="0" 
      android:background="@drawable/shape_qn" 
      android:gravity="center" > 

      <TextView 
       android:id="@+id/Q1" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_column="0" 
       android:layout_row="0" 
       android:text="Question1" /> 
     </LinearLayout> 

     <LinearLayout 
      android:id="@+id/A1Lyt" 
      android:layout_width="160dp" 
      android:layout_height="50dp" 
      android:layout_column="1" 
      android:layout_row="0" 
      android:background="@drawable/shape" 
      android:gravity="center" 
      android:text="Answer1" > 

      <TextView 
       android:id="@+id/A1" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_column="0" 
       android:layout_row="0" 
       android:text="Answer1" /> 
     </LinearLayout> 

     <LinearLayout 
      android:id="@+id/Q2Lyt" 
      android:layout_width="160dp" 
      android:layout_height="50dp" 
      android:layout_column="0" 
      android:layout_row="1" 
      android:background="@drawable/shape_qn" 
      android:gravity="center" > 

      <TextView 
       android:id="@+id/Q2" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="Question2" /> 
     </LinearLayout> 

     <LinearLayout 
      android:id="@+id/A2Lyt" 
      android:layout_width="160dp" 
      android:layout_height="50dp" 
      android:layout_column="1" 
      android:layout_row="1" 
      android:background="@drawable/shape" 
      android:gravity="center" > 

      <TextView 
       android:id="@+id/A2" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_column="0" 
       android:layout_row="0" 
       android:text="Answer2" /> 
     </LinearLayout> 
    </GridLayout> 
</LinearLayout> 

Ho provato il seguente codice per creare il layout della griglia. Tuttavia, per i layout lineari del bambino, non riesco a trovare un modo per impostare in modo programmatico i parametri android: layout_column e android: layout_row.

GridLayout gridLayout = new GridLayout(this); 
    gridLayout.setColumnCount(2); 
    gridLayout.setRowCount(15); 

    LinearLayout lyt1 = new LinearLayout(this); 
    LinearLayout.LayoutParams prmsLinLyt = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); 

Eventuali indicazioni?

+0

Non sono stato in grado di ottenere ulteriori informazioni. Quindi, sto usando invece un layout di tabella. – Srikanth

+10

Non capisco perché questa domanda è stata chiusa. Penso che sia un errore. Mi avrebbe aiutato se la domanda avesse avuto risposta. – Softlion

+4

var gridLayoutParams = new GridLayout.LayoutParams(); gridLayoutParams.SetGravity (GravityFlags.Fill); gridLayoutParams.RowSpec = GridLayout.InvokeSpec (iRow, 1); gridLayoutParams.ColumnSpec = GridLayout.InvokeSpec (iCol, 1); grid.AddView (aView, gridLayoutParams); – Softlion

risposta

-3

si dovrebbe provare questo:

gridLayout.setLayoutParams(prmsLinLyt); 

e se si vuole dare valori ...

LinearLayout.LayoutParams prmsLinLyt = new LinearLayout.LayoutParams(90,100); 

where layout_width = 90 
and layout_height= 100 
+0

Grazie, ne sono consapevole. Ma non riesco a trovare un equivalente per android: layout_column e android: parametri layout_row. Questi non vengono visualizzati nelle proprietà di prmsLinLyt. – Srikanth

7

ecco come si può creare a livello di codice:

GridLayout gridLayout = new GridLayout(getContext()); 

// Add Title 
GridLayout.Spec titleTxtSpecColumn = GridLayout.spec(2, GridLayout.BASELINE); 
GridLayout.Spec titleRowSpec = GridLayout.spec(0); 
TextView titleText = new TextView(getContext()); 
titleText.setText("Title"); 

gridLayout.addView(titleText, new GridLayout.LayoutParams(titleRowSpec , titleTxtSpecColumn)); 

Per maggiori dettagli vedi esempi di ApiDemos.

+1

Tutte le righe/colonne vengono aggiunte nella stessa cella. – Softlion

+0

In effetti avevi ragione – Softlion

Problemi correlati