質問
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()から入手した情報を入れます。
しかし、私の活動は次のように見えます:
何が間違っているのでしょうか?
私が見つけたすべての情報はそうでした これ, 、しかし、答えは私を助けませんでした。
解決
まず、このような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);
}
ボタンが表示されています。
所属していません StackOverflow