Android Xamarin RendererFactory.getRenderer()不起作用

时间:2015-05-11 08:20:12

标签: xamarin xamarin.forms xamarin.forms.labs

对于数据模板,我在StackLayout中使用了标签,并为grid-view创建了自定义渲染器

代码RendererFactory.getRenderer()不起作用;它只显示StackLayout内部没有任何标签。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:1)

截至目前,RendererFactory.getRenderer()无法使用包含子内容refer this link的自动布局容器(如StackLayout / GridLayout)。仅渲染主要父级,但子级未在UI中呈现,但转换为本机视图后控件可用 this._view = RendererFactory.GetRenderer(this._viewCell.View).NativeView;

尝试使用 AbsoluteLayout 并相应地定位控件。我曾使用XLabs Grid View Control尝试过这个,因为他们使用网格视图渲染器来制作UICollectionView(TileList)和GridViewCell,用于从窗体生成viewCell到Native。

<controls:GridView
                    x:Name="GrdView"
                    RowSpacing="5"
                    Padding="5"
                    ColumnSpacing = "5"
                    ItemWidth ="152"
                    ItemHeight = "200"
                    ItemsSource="{Binding gridColl}"
                >
            <controls:GridView.ItemTemplate>
                <DataTemplate >
                    <ViewCell>
                        <ViewCell.View>
                         <!-- WORKING-->
                            <AbsoluteLayout BackgroundColor="Red">

                                <Image Source="{Binding image}"  
                                       AbsoluteLayout.LayoutBounds="0, 0, 0.5, 0.5"
                                        AbsoluteLayout.LayoutFlags="All"/>
                                <BoxView Color="#8080FF"
                                         AbsoluteLayout.LayoutBounds="0.33, 0, 0.25, 0.25"
                                         AbsoluteLayout.LayoutFlags="All" />
                                <Label Text="Test" BackgroundColor="Red"
                                       AbsoluteLayout.LayoutBounds="1, 1, 0.5, 0.5"
                                       AbsoluteLayout.LayoutFlags="All"/>
                            </AbsoluteLayout>

                             <!--NOT WORKING-->
                            <!--<StackLayout BackgroundColor="Blue">
                                <Image Source="{Binding image}" />
                                <Label Text="Test" BackgroundColor="Red"/>
                            </StackLayout>-->
                        </ViewCell.View>
                    </ViewCell>
                </DataTemplate>
            </controls:GridView.ItemTemplate>
        </controls:GridView>

我希望这可以帮助你...