动态添加视图到活动布局

7
我有一个自定义视图(TextView的扩展),我想动态地将其添加到我的布局中(不想在main.xml文件中包含它)。
书上说要在java代码中使用findViewById()获取RelativeLayout,然后创建自定义视图的新实例,然后使用addView在RelativeLayout上添加新视图。
我没有收到任何错误消息,但是当我点击按钮添加新视图时,什么也没有发生(视图未被添加)。我需要设置自定义视图的其他属性(例如布局宽度、布局高度)才能显示它吗?
编辑:添加代码
// 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);
1个回答

3
请在您添加视图的代码中发布。但是,您可能会缺少宽度和高度的参数。尝试像这样做。
LayoutParams p = new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.FILL_PARENT);    
txtView.setLayoutParams(p);

或者您希望指定宽度和高度。在XML布局中,layout_width和layout_height是必需的属性。

好的,我已将自定义视图更改为ImageView,因为我认为这样在Activity上更容易看到。我编辑了我的原始帖子以包含一些代码...仍然没有看到任何东西。由于它是相对视图,我需要在AddView()方法中包含一些内容来告诉它放置在哪里吗? - Blair Jones
在XML中,它可能是android:layout_below或android:layout_toRightOf,但不确定是否需要以及如何将其放入Java代码中。 - Mathias Conradt
嗯...是的,我知道XML那一部分,但我想要以编程的方式实现这个。我刚刚尝试将它放在一个不同的线程上,以为那可能是问题所在(不能在同一个线程上更新UI),但那并没有解决问题。我感到有些困惑。 - Blair Jones
2
啊哈!我需要传递“this”而不是null到自定义视图声明中。我会将你的回复标记为答案,因为我肯定需要这些参数:P 谢谢! - Blair Jones

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接