Android程序化相对布局:BELOW规则不起作用?

时间:2013-10-04 05:46:39

标签: android android-layout relativelayout

我想创建一个布局(请参阅下面的类RosterPlayerView),该布局包含一个带有文本的图像,然后在相对布局中多次实例化该视图。我使用相对布局而不是线性布局会变得更复杂。

当我第一次运行下面的代码(但没有setId调用)时,文本出现高于图像。感谢this stack overflow article我发现相对布局需要独特的小部件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");
    }
}

2 个答案:

答案 0 :(得分:0)

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

您还可以在将LinearLayoutimageView添加到textView

之前创建RelativeLayout

答案 1 :(得分:0)

对于你想要做的事情,一个LinearLayout会简单得多。因此,就此而言,还要夸大XML布局。