Question

J'utilise Eclipse + SDK Android.

Je suis en train de créer une table avec des données fournies par des capteurs. Je reçois correctement les informations, par je vais avoir des problèmes pour faire une table pour l'afficher en XML dinamically.

Ceci est le 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>

Et voici le code de mon activité:

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

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

    setInfoByView();

}

    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));
}

Ceci est un test, je suis en train d'inclure un bouton dinamically, si le travail, je vais mettre les informations que je reçois de getsensorinfo ();

Mais mon apparence d'activité comme celle-ci:

IMAGE DE L'ACTIVITE

Que pouvais-je faire mal?

Toutes les informations que j'ai trouvé CE , mais les réponses ne m'a pas aidé.

Était-ce utile?

La solution

Tout d'abord créer une table mise en page dans votre fichier XML comme ceci:

<?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>

Ensuite, utilisez ce code pour créer la ligne de dynamique à l'intérieur du tableau Mise en page:

         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);
        }

FINAL (test) SOLUTION:

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);
}

Et le bouton est visible maintenant.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top