0

イメージビューをテーブルに動的に追加しようとしています。これを行うには、次のコードを使用します。

public void showLetter(String aLetter){
    TableLayout letterTable = (TableLayout ) findViewById(R.id.letterArea);
    TableRow letterRow = (TableRow) letterTable.getChildAt(0);      
    ImageView newLetter = new ImageView(this);      
    int imageResource = getResources().getIdentifier("a", "drawable", getPackageName());
    newLetter.setBackgroundResource(imageResource);
    LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) new LinearLayout.LayoutParams(100, 50);
    newLetter.setLayoutParams(params);
    letterRow.addView(newLetter);
}

このコードを実行しようとすると、showLetter 関数を呼び出したときに画像が表示されません。newLetter のレイアウト パラメータを設定しないと、この関数が機能し、画像が表示されます。この画像が消えることなくレイアウトパラメータを設定できない理由を誰か知っていますか?

これは、画像を追加するテーブルを含む xml ファイルです。

<TableLayout
    android:id="@+id/letterArea"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@id/submitWord"
    android:layout_marginLeft="@dimen/default_gap"
    android:layout_marginRight="@dimen/default_gap"
    android:layout_marginTop="@dimen/default_gap" >

    <TableRow app:layout_gravity="fill_horizontal" >

        <ImageView
            android:layout_width="@dimen/blocksize"
            android:layout_height="@dimen/blocksize"
            android:background="@drawable/scrabble_a" />

        <ImageView
            android:layout_width="@dimen/blocksize"
            android:layout_height="@dimen/blocksize"
            android:background="@drawable/scrabble_b" />

    </TableRow>
</TableLayout>
4

1 に答える 1

1

から削除(LinearLayout.LayoutParams)LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) new LinearLayout.LayoutParams(100, 50);て確認してください...

編集

あなたのタラで私が見たのは、ImageViewの親がLinearLayoutではなくTableRowであることです

これで一度確認できます

TableRow.LayoutParams params = new TableRow.LayoutParams(100, 50);

の挿入

LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) new LinearLayout.LayoutParams(100, 50);
于 2013-05-10T15:02:15.247 に答える