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

对于您正在尝试做的事情,LinearLayout 会简单得多。就此而言,膨胀 XML 布局也是如此。

于 2013-10-04T06:44:53.320 回答
0

尝试imageView在将其添加到布局之前设置您的 ID。

您还可以LinearLayout在将imageViewtextView添加到RelativeLayout

于 2013-10-04T06:29:23.310 回答