Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xamarin RenderFactory.GetRenderer()不工作_Xamarin_Renderer_Xamarin Forms - Fatal编程技术网

Xamarin RenderFactory.GetRenderer()不工作

Xamarin RenderFactory.GetRenderer()不工作,xamarin,renderer,xamarin-forms,Xamarin,Renderer,Xamarin Forms,我正在使用Xamarin开发一个跨平台控件。我的目标是有一个可选项目的列表。我有一些可以正常工作的iOS代码: private UIView CreateViewWithTemplate(UIPickerView pickerView, nint row) { // create our content presenter DYMOContentPresenter presenter = new DY

我正在使用Xamarin开发一个跨平台控件。我的目标是有一个可选项目的列表。我有一些可以正常工作的iOS代码:

    private UIView CreateViewWithTemplate(UIPickerView pickerView, nint row)
            {
                // create our content presenter
                DYMOContentPresenter presenter = new DYMOContentPresenter();

                // set its data template to the one from our control
                presenter.ItemTemplate = this._pickerControl.ItemTemplate;

                // set the data to the correct item from the list
                presenter.ObjectContent = this._pickerControl.Items.ElementAt((int)row);

                // and use the xamarin forms renderer factory to get a renderer for the item
                IVisualElementRenderer renderer = RendererFactory.GetRenderer(presenter);

                // tell the renderer the size of the view and 
                renderer.SetElementSize(new Size(pickerView.Frame.Width, ROW_HEIGHT));

                // then get the native view and return


 return renderer.NativeView;
        }
然而,我试图在Android中实现这一点的尝试不起作用:

private View CreateViewWithTemplate(int position, View convertView, ViewGroup parent)
{            
    // create content presenter
    DYMOContentPresenter presenter = new DYMOContentPresenter();

    // set its data template to the correct item from the list
    presenter.ItemTemplate = this._pickerControl.ItemTemplate;

    // set data to correct list item
    presenter.ObjectContent = this._pickerControl.Items.ElementAt((int) position);

    // use Xamarin forms renderer factory to get a renderer for the item
    IVisualElementRenderer renderer = RendererFactory.GetRenderer(presenter);

    presenter.Layout(new Xamarin.Forms.Rectangle(0, 0, parent.Width, ROW_HEIGHT));
    renderer.UpdateLayout();
    renderer.Tracker.UpdateLayout();
    renderer.ViewGroup.LayoutParameters = new ViewGroup.LayoutParams(parent.Width, ROW_HEIGHT);
    renderer.ViewGroup.Layout(0, 0, parent.Width, ROW_HEIGHT);
    renderer.ViewGroup.BuildDrawingCache();

    // get native view and return
    return renderer.ViewGroup;
}
我可以看到单个列表视图行,但其中没有文本显示。在注释掉这段代码并用简单的
TextView
替换后,我可以看到文本,因此我怀疑渲染器有问题。我也尝试过此代码的许多变体(指定
LayoutParams
,尝试调整子项大小,等等)。似乎什么都不管用