【问题标题】:Android, add new view without XML LayoutAndroid,添加没有 XML 布局的新视图
【发布时间】:2010-11-15 17:49:19
【问题描述】:

我需要一些有经验的人的帮助。我希望这很容易。 我只想在主程序的视图上方显示新视图(创建它没有 XML layouts)。 是整合 AdMob.com 广告块:

我写了这样的代码:

AdView ad = new AdView(this); 
ad.layout(10, 10, 100, 100); 
ad.setVisibility(View.VISIBLE); 
ad.bringToFront(); 
ad.requestFocus(); 
ad.invalidate();

如您所见 - 没有任何帮助,没有可见的窗口
我做错了什么? 谢谢!

附:我在ActivityonCreate(Bundle) 中取得了成功,但我也在其他地方尝试过。

【问题讨论】:

    标签: java android view controls


    【解决方案1】:

    您实际上并没有告诉系统draw 任何东西或在哪里绘制它。您需要查看有关您的活动的setContentView(view) 的文档。如果你想让它在你当前的屏幕上绘制,请查看Dialog(和setContentView)的文档。

    当我以编程方式创建任意视图以在现有的layout 中进行绘制时,我通常将FrameLayout 标记添加到我的layout XML,然后在代码调用findViewById() 中,然后我可以使用该@987654329 @视图将view添加到(addView())。

    我希望在不为您编写代码的情况下对某些人有所帮助。

    【讨论】:

    • 感谢您的回复。我已经解决了使用 XML 重新制作所有应用程序并使用 RelativeLayout 或 AbsoluteLayout 的问题。
    • @lilbyrdie:我使用与您相同的方法,但是当我尝试将我以编程方式构建的视图添加到以 XML 声明的框架布局时,应用程序强制关闭。所以当我这样做时,Frame Layout myFrameView.addView(viewBuiltProgrammatically) 它失败了。你认为这是为什么?
    • @Namratha:您需要检查错误输出以查看异常文本的内容。如果没有任何信息可以继续,我猜您可能错过了某个设置或设置了一些不允许的设置。
    • 我有可怕的 IllegalStateException: java.lang.IllegalStateException: 指定的孩子已经有一个父母。您必须首先在孩子的父母上调用 removeView()。我试图调用 ((ViewGroup)child.getParent()).removeView(child));但它不起作用。在一种情况下,child.getParent() 返回 null,在另一种情况下,removeView 似乎根本没有效果,(之后调用 addView 仍然会导致 IllegalStateException)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-28
    • 1970-01-01
    • 1970-01-01
    • 2012-04-28
    • 2012-06-30
    相关资源
    最近更新 更多