質問

Eclipse + Android SDKを使用しています。

センサーが提供するデータを使用してテーブルを作成しようとしています。私は情報を正しく受け取ります。XMLでディナミーに表示するためにテーブルを作成するのに問題があります。

これは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));
}

これはテストです。私はボタンをディナミーに含めようとしています。仕事の場合、GetSensorinfo()から入手した情報を入れます。

しかし、私の活動は次のように見えます:

ACTIVITY IMAGE

何が間違っているのでしょうか?

私が見つけたすべての情報はそうでした これ, 、しかし、答えは私を助けませんでした。

役に立ちましたか?

解決

まず、このようなXMLファイルに1つのテーブルレイアウトを作成します。

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