Android Xamarin表单、RecyclerView、来自xaml的单元渲染
我想在Xamarin.Forms中创建控件,该控件使用本机android RecyclerView作为呈现程序 当我尝试创建包含标签或其他控件的单元格时,会出现问题,其水平选项不同于:Default、Fill和FillAndExpand。标签不会自动呈现。这是我的.xaml单元代码Android Xamarin表单、RecyclerView、来自xaml的单元渲染,android,android-recyclerview,xamarin.forms,custom-renderer,cellrenderer,Android,Android Recyclerview,Xamarin.forms,Custom Renderer,Cellrenderer,我想在Xamarin.Forms中创建控件,该控件使用本机android RecyclerView作为呈现程序 当我尝试创建包含标签或其他控件的单元格时,会出现问题,其水平选项不同于:Default、Fill和FillAndExpand。标签不会自动呈现。这是我的.xaml单元代码 我个人认为这是一个在网格中使用水平标签选项的错误。不确定,您可以尝试在Bugzilla中提交此问题 默认情况下设置为LayoutOptions.Fill,当此属性默认设置或设置为FillAndExpand时,它会工
我个人认为这是一个在网格中使用水平标签选项的错误。不确定,您可以尝试在Bugzilla中提交此问题 默认情况下设置为LayoutOptions.Fill,当此属性默认设置或设置为FillAndExpand时,它会工作,其他具有不同水平选项的标签在我旁边的宽度为0,这就是为什么只显示一些标签 解决此问题的一个解决方法是向这些标签提供宽度为0的宽度请求,但请注意 指定“水平选项”可修改当父布局沿X轴有多余可用空间时元素的布局方式。此外,它还指定元素是否应消耗父布局X轴上的剩余空间。如果布局的多个子项设置为展开,则额外空间将按比例分布
此处的宽度应小于父级,以查看不同布局选项的结果 我找到了答案。我的问题确实与水平选项有关,你的说明很有用 。。。此外,它还指定元素是否应消耗父布局X轴上的剩余空间 我刚刚将父视图添加到我的viewHolder的XF版本中。在这里你可以看到我改变了什么:
public override RecyclerView.ViewHolder OnCreateViewHolder(ViewGroup parent, int viewType)
{
FormsRecyclerCell fastCell;
fastCell = this.Element.ItemTemplate.CreateContent() as FormsRecyclerCell;
var view = new FormsRecyclerViewCellContainer(parent.Context, fastCell, parent, this.Element.ItemWidth, this.Element);
if (this.SelectionEnabled)
{
view.Click += MainView_Click;
}
//--------------**-----------------
//Here i added XF parent to XF cell
fastCell.Parent = this.Element;
var dpW = this.ConvertDpToPixels(this.Element.ItemWidth);
var dpH = this.ConvertDpToPixels(this.Element.ItemHeight);
view.SetMinimumWidth(dpW);
view.SetMinimumHeight(dpH);
view.LayoutParameters = new GridLayoutManager.LayoutParams(dpW, GridLayoutManager.LayoutParams.WrapContent);
return new FormsRecyclerViewCell(view);
}
这仅仅是一行代码,现在标签在水平选项的每一个设置中都能完美地工作。这很难找到,因为本机android ViewHolder有本机父级,所以我认为XF VievHolder会立即从渲染器获得与XF版本相同的父级。我错了,我不得不自己决定
我现在知道,从.xaml开始的所有计算都是在Xamarin.Forms的核心中实现的,并且要进行正确的计算,孩子们必须有他们的父母