2016-09-16 44 views
0

我需要在運行時創建一些按鈕。我試圖找到一個在線解決方案,但只有舊線程。我唯一發現的是以下代碼:在運行時創建UI元素

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

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

感謝您的答覆。我會在稍後檢查:] – g2556

+0

它工作正常。非常感謝:] – g2556

+0

不客氣。 – Cheesebaron