在运行时创建UI元素

本文关键字:元素 UI 创建 运行时 | 更新日期: 2023-09-27 18:07:19

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

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);

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

在运行时创建UI元素

Doing

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);