Xamarin.android TextCell的表单自定义呈现程序

Xamarin.android TextCell的表单自定义呈现程序,xamarin.android,xamarin.forms,custom-renderer,Xamarin.android,Xamarin.forms,Custom Renderer,我第一次尝试创建自定义渲染器。我只想在ListView中更改TextCell的大小 我在这里查看了入门单元的指南,但不知道如何处理TextCell,并且在任何地方都找不到信息(这可能是非常基本的,但我对Xamarin非常陌生) 输入单元格的代码如下(对于Android) 公共类MyEntryRenderer:EntryRenderer { //重写OnElementChanged方法,以便在初始设置后调整此渲染器 受保护的覆盖无效OnElementChanged(ElementChangedEv

我第一次尝试创建自定义渲染器。我只想在ListView中更改TextCell的大小

我在这里查看了入门单元的指南,但不知道如何处理TextCell,并且在任何地方都找不到信息(这可能是非常基本的,但我对Xamarin非常陌生)

输入单元格的代码如下(对于Android)

公共类MyEntryRenderer:EntryRenderer
{
//重写OnElementChanged方法,以便在初始设置后调整此渲染器
受保护的覆盖无效OnElementChanged(ElementChangedEventArgs e)
{
base.OnElementChanged(e));
如果(e.OldElement==null){//执行初始设置
//让我们获取对本机控件的引用
var nativeEditText=(global::Android.Widget.EditText)控件;
//对这里的文本字段执行任何操作!
nativeEditText.SetBackgroundColor(全局::Android.Graphics.Color.DarkGray);
}
}
}
那么在TextCell的情况下,我覆盖了什么?(如果我使用OnElementChanged,它不会给我OnElementChanged作为基-它确实给我OnCellPropertyChanged,但是如果我使用它作为方法,那么它似乎想要PropertyChangedEventArgs,然后它不喜欢它---我不知道该怎么做,这让我发疯


任何建议都很受欢迎

不确定这是否是您正在寻找的,但这应该是可行的。您可以操作
TextCell
的文本视图和详细视图

不过,我认为您最好使用
ViewCell
,因为您可以更好地控制包含的内容和渲染方式

类MyTextCellRenderer:TextCellRenderer
{
受保护的覆盖视图GetCellCore(单元格项、视图转换视图、视图组父级、上下文)
{
var cell=(LinearLayout)base.GetCellCore(项、转换视图、父项、上下文);
var textView=(textView)(cell.GetChildAt(1)作为LinearLayout.GetChildAt(0);
var detailView=(TextView)(cell.GetChildAt(1)作为LinearLayout.GetChildAt(1);
textView.TextSize=textView.DipsToPixels(32);
返回单元;
}
}
公共静态类LayoutHelperExtensions
{
公共静态int-DipsToPixels(此视图,浮点倾斜)
{
return(int)Math.Round(TypedValue.ApplyDimension(ComplexUnitType.Dip,Dip,view.Resources.DisplayMetrics));
}
}

不确定这是否是您要查找的内容,但这应该可以工作。您可以操作
TextCell
的文本视图和详细视图

不过,我认为您最好使用
ViewCell
,因为您可以更好地控制包含的内容和渲染方式

类MyTextCellRenderer:TextCellRenderer
{
受保护的覆盖视图GetCellCore(单元格项、视图转换视图、视图组父级、上下文)
{
var cell=(LinearLayout)base.GetCellCore(项、转换视图、父项、上下文);
var textView=(textView)(cell.GetChildAt(1)作为LinearLayout.GetChildAt(0);
var detailView=(TextView)(cell.GetChildAt(1)作为LinearLayout.GetChildAt(1);
textView.TextSize=textView.DipsToPixels(32);
返回单元;
}
}
公共静态类LayoutHelperExtensions
{
公共静态int-DipsToPixels(此视图,浮点倾斜)
{
return(int)Math.Round(TypedValue.ApplyDimension(ComplexUnitType.Dip,Dip,view.Resources.DisplayMetrics));
}
}

您好,谢谢您的回复。我曾尝试使用您的解决方案,但我有一个小问题,由于我的经验不足,我需要一些建议Scratch-我让它工作了,非常感谢。您提到在ViewCell中使用它会更好,您能为我设置正确的方向吗-我需要在程序集中使用什么(我在上面的示例中使用了ExportRenderer),我需要什么方法来覆盖等,或者是否有一个好的网站,以一种易于理解的方式提供这些信息?欢迎阅读这篇关于如何使用ViewCell的文章。嗨,谢谢你的回复。我已经尝试使用你的解决方案,但我有一个小问题,由于我的经验不足,我需要一些建议Scratch-我得到了它的工作,非常感谢。您提到在ViewCell中使用它会更好,您能为我指出正确的方向吗?我需要在程序集中使用什么(我在上面的示例中使用了ExportRenderer),我需要重写什么方法等等,或者是否有一个好的站点以易于理解的方式提供这些信息?请阅读这篇关于如何使用ViewCell的文章。
public class MyEntryRenderer : EntryRenderer
{
  // Override the OnElementChanged method so we can tweak this renderer post-initial setup
  protected override void OnElementChanged (ElementChangedEventArgs<Entry> e)
  {
    base.OnElementChanged (e));
    if (e.OldElement == null) {   // perform initial setup
      // lets get a reference to the native control
      var nativeEditText = (global::Android.Widget.EditText) Control;
      // do whatever you want to the textField here!
      nativeEditText.SetBackgroundColor(global::Android.Graphics.Color.DarkGray);
    }
  }
}