Domanda

Sto usando Eclipse + SDK di Android.

Sto cercando di creare una tabella con i dati forniti dai sensori. Ottengo le informazioni in modo corretto, con sto avendo problemi a fare un tavolo di mostrarlo in XML dinamicamente.

Questa è la sensorinfo.XML:

<?xml version="1.0" encoding="utf-8"?>

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:stretchColumns="1"
android:id="@+id/SensorInfoTableLayout">


<TableRow>

    <TextView
            android:layout_column="1"
            android:text="@string/sensor_name_title"
            android:padding="3dip" />

    <TextView
            android:layout_column="2"
            android:text="@string/sensor_type_title"
            android:padding="3dip" />
    <TextView
            android:layout_column="3"
            android:text="@string/sensor_value_title"
            android:padding="3dip" />
    <TextView
            android:layout_column="4"
            android:text="@string/sensor_unit_title"
            android:padding="3dip" />
</TableRow>

   <View
    android:layout_height="4dip"
    android:background="#FF909090" />

</TableLayout>

E questo è il codice della mia attività:

@Override
public void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState); 

    getSensorInfo();
    setContentView(R.layout.sensorinfo);

    setInfoByView();

}

E

    private void setInfoByView()
{
    /* Find Tablelayout defined in xml */
    TableLayout myTableLayout = (TableLayout)findViewById(R.id.SensorInfoTableLayout);
    /* Create a new row to be added. */
    TableRow myTableRow = new TableRow(this);
    myTableRow.setLayoutParams(new LayoutParams(
                        LayoutParams.WRAP_CONTENT,
                        LayoutParams.WRAP_CONTENT));
    /* Create a Button to be the row-content. */
    Button b = new Button(this);
    b.setText("Dynamic Button");
    b.setLayoutParams(new LayoutParams(
                        LayoutParams.WRAP_CONTENT,
                        LayoutParams.WRAP_CONTENT));
    myTableRow.setBackgroundColor(5);
    /* Add Button to row. */
    myTableRow.addView(b);
    /* Add row to TableLayout. */
    myTableLayout.addView(myTableRow,new TableLayout.LayoutParams(
              LayoutParams.WRAP_CONTENT,
              LayoutParams.WRAP_CONTENT));
}

Questa è una prova, sto cercando di includere un pulsante dinamicamente, se il lavoro, io metterò le informazioni che ricevo da getSensorInfo ();

Ma il mio aspetto un'attività come questa:

ATTIVITA 'IMMAGINE

Che cosa potrei fare male?

Tutte le informazioni che ho trovato è stato QUESTO , ma le risposte non mi ha aiutato.

È stato utile?

Soluzione

Prima di tutto creare un layout tabella nel file XML in questo modo:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#BFD6E8">

<ScrollView android:id="@+id/image_scroll"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content">

    <TableLayout android:id="@+id/image_table"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content">
    </TableLayout>

</ScrollView>

</LinearLayout>

Quindi utilizzare il codice per la creazione fila dinamica all'interno layout tabella:

         TableLayout image_table=null;
         image_table=(TableLayout)findViewById(R.id.image_table);

        for(int i=0; i<10; i++){
            TableRow tableRow=new TableRow(this);
            tableRow.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
            tableRow.setGravity(Gravity.CENTER_HORIZONTAL);
            tableRow.setPadding(5, 5, 5, 5);
            for(int j=0; j<1; j++){
                Button bttn=new Button(this);
                bttn.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
                bttn.setText(Hello);
                tableRow.addView(image, 200, 200);
            }
            image_table.addView(tableRow);
        }

FINALE (test) SOLUZIONE:

private void setInfoByView2()
{
    TableLayout myTableLayout = null;
    TableRow myTableRow = new TableRow(this);
    myTableLayout = (TableLayout)findViewById(R.id.SensorInfoTableLayout);

    myTableRow.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
    //myTableRow.setGravity(Gravity.CENTER_HORIZONTAL);
    myTableRow.setPadding(5, 5, 5, 5);
    Button bttn = new Button(this);
    bttn.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
    bttn.setText("Hello");
    myTableRow.addView(bttn, 200, 200);
    myTableLayout.addView(myTableRow);
}

E il pulsante è visibile oggi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top