【问题标题】:Order of element gets changed when it's focused in Grid layout当元素集中在网格布局中时,元素的顺序会发生变化
【发布时间】:2020-01-07 14:00:16
【问题描述】:

我在网格中放置了一些没有任何行和列定义的元素。

<Grid>
    <Button x:Name="button" Text="{Binding ButtonText}" CornerRadius="5" />
    <Image HorizontalOptions="Start" VerticalOptions="Center" Source="{Binding IconImageSource}" InputTransparent="True"/>
</Grid>

在这里,图像是顶部元素。当按钮被点击时,图像返回。为什么会发生这种情况,有什么办法可以阻止它?

【问题讨论】:

    标签: xaml xamarin xamarin.forms


    【解决方案1】:

    这个原因来自Fast Renderers

    快速渲染器可用于 Android 上 Xamarin.Forms 中的以下控件:

    • 按钮
    • 图片
    • 标签
    • 框架

    在功能上,这些快速渲染器与传统渲染器没有什么不同。从 Xamarin.Forms 4.0 开始,所有以 FormsAppCompatActivity 为目标的应用程序都将默认使用这些快速渲染器。

    可以使用以下方法覆盖快速渲染器:

    1. 通过在调用Forms.Init 之前将以下代码行添加到您的MainActivity 类来启用旧版渲染器:

      Forms.SetFlags("UseLegacyRenderers");

    2. 使用以旧版渲染器为目标的自定义渲染器。任何现有的自定义渲染器都将继续与旧版渲染器一起使用。

    3. 指定使用不同渲染器的不同View.Visual,例如Material。有关 Material Visual 的更多信息,请参阅Xamarin.Forms Material Visual

    所以,这里 Solutionglobal::Xamarin.Forms.Forms.Init(this, savedInstanceState) 调用之前将以下内容添加到您的 MainActivity.OnCreate:

    protected override void OnCreate (Bundle bundle)
    {
        base.OnCreate (bundle);
    
        global::Xamarin.Forms.Forms.SetFlags("UseLegacyRenderers"); //add code here
    
        global::Xamarin.Forms.Forms.Init (this, bundle);
        LoadApplication (new App ()); // method is new in 1.3
    }
    

    效果:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多