0

その下にテキストを含む画像で構成されるレイアウト (以下のクラス 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");
    }
}
4

2 に答える 2

0

imageViewレイアウトに追加する前に、ID を設定してみてください。

LinearLayoutに追加する前にimageViewtextView内部でを作成することもできます。RelativeLayout

于 2013-10-04T06:29:23.310 に答える