gpt4 book ai didi

c# - Xamarin.android GUI 在 AddView 后不更新

转载 作者:太空宇宙 更新时间:2023-11-03 22:54:52 24 4
gpt4 key购买 nike

我在 C# 中为 Xamarin.android 创建一个应用程序并遇到了一个奇怪的问题。我使用一个包装器类来膨胀 View 。之后,我使用 AddView 将 View 添加到线性布局。有时 gui 没有明显的原因不更新。未添加元素。当我调用任务按钮(我不知道这是不是正确的名称 - 主页按钮左侧的按钮)然后导航回我的应用程序时,元素将出现。我在某处读到您可以使用 Invalidate() 来更新图形用户界面,但这似乎不起作用。

非常感谢任何建议。

这是我的包装类的构造函数:

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

在这里我在 Activity 创建很久之后添加了 View :

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

最佳答案

几个想法不仅仅是一个答案,也许可能是不好的做法,但我没有遇到你的问题:

  • 我通常在 OnViewCreated (Fragment)/OnCreate(Activity) 中添加以编程方式创建的 View

  • 确保您的 LinearLayout 有父级。它必须添加到父 View (根布局、另一个布局、 ScrollView ……)。

  • 确保您没有阻塞的、手动启动的涉及 UI 更新的线程(即使通过 RunOnUiThread),它可以通过重新 Activity 解锁。

  • 确保您的 View 不会被布局中的另一个现有 View “压平”(例如, View 在两个维度上都与父级尺寸匹配)

除了它不会显示您的布局之外,您的应用程序是否正常运行(没有永久卡住)?

关于c# - Xamarin.android GUI 在 AddView 后不更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45857689/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com