在运行时创建UI元素

时间:2016-09-16 15:06:40

标签: c# xamarin xamarin.android

我需要在运行时创建一些按钮。我试图在网上找到一个解决方案,但只有旧线程。我唯一能找到的是以下代码:

ViewGroup layout = (ViewGroup)Resource.Layout.Main;

Button btn = new Button(this);
btn.Text = "text";
btn.LayoutParameters = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MatchParent, ViewGroup.LayoutParams.WrapContent);
layout.AddView(btn);

我不明白这应该如何运作。没有编译错误,但应用程序在启动后立即关闭。你能解释为什么会发生这种情况以及如何正确编写这段代码吗?

1 个答案:

答案 0 :(得分:0)

否则

ViewGroup layout = (ViewGroup)Resource.Layout.Main;

不会给你当前夸大的布局。 Resource.Layout.Main只是指向资源的int

而是提供您当前显示的布局和ID:

android:id="@+id/root"

现在它的类型确实很重要。默认模板使用LinearLayout。所以找到它将是:

var root = FindViewById<LinearLayout>(Resource.Id.root);

然后您可以将按钮添加到:

var button = new Button(this) 
{ 
    Text = "hello",
    LayoutParameters = new LinearLayout.LayoutParams(
        ViewGroup.LayoutParams.MatchParent, 
        ViewGroup.LayoutParams.WrapContent)
};

root.AddView(button);