2017-08-24 76 views
0

我正在創建Xamarin.android在C#中的應用程序,並遇到一個奇怪的問題。 我使用膨脹視圖的包裝類。之後,我將視圖添加到帶有AddView的線性佈局。有時gui沒有更新沒有明顯的原因。元素不添加。當我調用任務按鈕時(我不知道這是否是正確的名稱 - 主頁按鈕左側的按鈕),然後導航回到我的應用程序,這些元素將出現。我讀過的地方可以使用Invalidate()來更新gui,但這似乎不起作用。Xamarin.android圖形用戶界面不更新後添加查看

任何建議,非常感謝。

這是我的包裝類的構造函數:

public BoxDisplay(MainActivity activity, Product product, ViewGroup root) 
{ 
    View = activity.LayoutInflater.Inflate(Resource.Layout.BoxItem, root, false); 
    shelf = View.FindViewById<TextView>(Resource.Id.Shelf); 
    name = View.FindViewById<TextView>(Resource.Id.Name); 
    barcode = View.FindViewById<TextView>(Resource.Id.Barcode); 
    Stock = View.FindViewById<EditText>(Resource.Id.Stock); 
    typ = View.FindViewById<TextView>(Resource.Id.type); 
    this.activity = activity; 
    SetProduct(product); 
    Stock.ClearFocus(); 
    Stock.Click += (o, arg) => 
    { 
     Stock.SelectAll(); 
    }; 
    Stock.EditorAction += EditorAction; 
} 

,在這裏我想補充的活性產生長時間後認爲:

private void GenerateView(List<Product> products) 
    { 
     var boxlist = FindViewById<LinearLayout>(Resource.Id.BoxList); 
     foreach (var product in products) 
     { 
      var box = new BoxDisplay(this, product, boxlist); 
      boxDisplays.Add(box); 
      box.EnableEditText(false); 
      boxlist.AddView(box.View); 
      box.View.Click += (sender, e) => { box.UpdateBox(); }; 
     } 
    } 
+0

請發佈您的代碼,包裝類以及如何將視圖添加到'LinearLayout' –

回答

3

一對夫婦的想法不止一個答案,也許可能是不好的做法,但我沒有碰到你的問題:

  • 我通常添加programmatical在OnViewCreated(Fragment)/ OnCreate(Activity)中創建視圖

  • 確保您的LinearLayout具有父級。它必須添加到父視圖(根佈局,另一個佈局,滾動視圖,...)。

  • 確保您沒有一個涉及UI更新(即使通過RunOnUiThread)的阻止手動啓動的線程,該線程可以通過活動重新消除來解鎖。

  • 確保(具有兩個維度視圖匹配的父大小例如)

旁邊的事實你的觀點並沒有「扁平化」在佈局其他現有一個,它不會顯示你的佈局,你的應用程序是否運行正常(不會永久凍結)?