その下にテキストを含む画像で構成されるレイアウト (以下のクラス RosterPlayerView を参照) を作成し、そのビューを相対レイアウトで複数回インスタンス化したいと考えています。レイアウトがより複雑になるため、線形ではなく相対レイアウトを使用しました。
以下のコードを最初に実行したとき (ただし、setId 呼び出しなし)、テキストが画像の上に表示されました。このスタック オーバーフローの記事のおかげで、相対レイアウトを機能させるには一意のウィジェット ID が必要であることがわかりました。しかし、setId() 呼び出しを追加すると、テキスト ビューはまったく表示されません。
私は何を間違っていますか?
public class RosterPlayerView extends RelativeLayout {
ImageView imageView;
TextView textView;
static int layoutId = 100;
public RosterPlayerView(Context context, int playerId, Drawable photo) {
super(context);
imageView = new ImageView(context);
textView = new TextView(context);
addView(imageView, new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
imageView.setId(layoutId++);
RelativeLayout.LayoutParams timeLayoutParams = new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
timeLayoutParams.addRule(RelativeLayout.BELOW, imageView.getId());
addView(textView, timeLayoutParams);
imageView.setImageDrawable(photo);
textView.setId(layoutId++);
textView.setText("0:00");
}
}