我需要在运行时创建一些按钮。我试图在网上找到一个解决方案,但只有旧线程。我唯一能找到的是以下代码:
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);
我不明白这应该如何运作。没有编译错误,但应用程序在启动后立即关闭。你能解释为什么会发生这种情况以及如何正确编写这段代码吗?
答案 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);