Вопрос

Я использую Eclipse + Android SDK.

Я пытаюсь создать таблицу с данными, предоставленными датчиками. Я получаю информацию правильно, у меня возникают проблемы, чтобы сделать таблицу, чтобы показать ее в XML Dinamily.

Это 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>

И это код моей деятельности:

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

Это тест, я пытаюсь включить кнопку Dinamical, если я работаю, я помесчу информацию, которую получу от gestensorinfo ();

Но моя деятельность выглядит так:

ACTIVITY IMAGE

Что я мог сделать не так?

Вся информация, которую я нашел ЭТО, но ответы мне не помогли.

Это было полезно?

Решение

Прежде всего, создайте одну макет таблицы в вашем XML -файле, как это:

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

Затем используйте этот код для создания динамической строки внутри макета таблицы:

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

Окончательное (тестовое) решение:

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

И кнопка теперь виден.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top