7

レイアウトに動的に追加したい(main.xmlファイルに含めたくない)カスタムビュー(TextViewの拡張)があります。

この本は、JavaコードでfindViewById()を使用してRelativeLayoutをフェッチし、カスタムビューの新しいインスタンスを作成してから、RelativeLayoutでaddViewを使用して新しいビューを追加するように指示しています。

エラーは発生しませんが、ボタンをクリックして新しいビューを追加しても、何も起こりません(ビューは追加されていません)。カスタムビューを表示するには、カスタムビューに追加のプロパティ(レイアウト幅、レイアウト高さなど)を設定する必要がありますか?

編集:コードを追加する

// changed to an imageview as I thought it might be easier to see an image
RelativeLayout rel = (RelativeLayout) findViewById(R.id.rellay);
MyCustomImageView mciv = new MyCustomImageView(null);
mciv.setId(5);
LayoutParams p = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
mciv.setLayoutParams(p);
mciv.setImageResource(R.drawable.someImage);
rel.Addview(mciv);
4

1 に答える 1

3

ビューを追加する場所にコードを投稿してください。しかし、はい、幅と高さのパラメータが欠落している可能性があります。次のようなものを試してください

LayoutParams p = new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.FILL_PARENT);    
txtView.setLayoutParams(p);

または、幅と高さを希望します。また、xmlレイアウトでは、layout_widthとlayout_heightが必須の属性です。

于 2010-08-18T19:26:08.860 に答える