我需要从Xamarin.Forms.StackLayout实例获取原生Android StackView控件。这是一些解释问题的伪代码:
void ProcessMySL(Xamarin.Forms.StackLayout sl) {
var renderer =
Xamarin.Forms.Platform.Android.RendererFactory.GetRenderer(sl);
...
}
当我检查渲染器对象时,它的类型为Xamarin.Forms.Platform.Android.VisualElementRenderer
。但是,它没有Control
之类的任何属性来获取本机StackView
对象。
我想知道如何获取原生视图。问候。
答案 0 :(得分:0)
Xamarin.Forms.Platform.Android.VisualElementRenderer。但是,它没有任何属性,如Control,以获取本机StackView对象。
参考Renderer的官方文件:Renderer Base Classes and Native Control。 StackLayout
正在使用ViewRenderer
,因此会将其呈现为View
个对象,而不是StackView
。
此外,使用Xamarin.Forms.Platform.Android.RendererFactory.GetRenderer(sl)
仅返回DefaultRenderer
,但不会公开Control
属性。因此,请改为创建自定义渲染器。
答案 1 :(得分:0)
它显示Xamarin.Forms.StackLayout
未呈现为Android的StackView
控件,而是更通用的ViewGroup
对象。要获取Android原生视图,以下代码将起作用:
var renderer = RenderFactory.GetRenderer(stackLayout);
Android.Views.View view = renderer.ViewGroup;
...