我想将xamarin表单视图控件渲染到android textview中。
在customrenderer下面,在Android设备上使用初始默认文本呈现Android TextView。
现在,如果我在其中添加更多文字,此控件的高度不会增加,而是可滚动以查看屏幕上看不到的文字。
另一方面,如果我减少文本内容,这个控件的高度不会降低并占据相同的空间,并在scree上显示减少的文本内容。
问题:在这种文本更改的情况下,此标签应增加或减少Android屏幕上的高度。它在预期的IOS上运行良好。
BindingText是可绑定属性,用于为此控件设置文本。
CopyableLabelRenderer是我为Xamarin Forms提供的自定义渲染器类 图。
以下是示例代码。
class CopyableLabelRenderer : ViewRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<Xamarin.Forms.View> e)
{
base.OnElementChanged(e);
try
{
var label = new TextView(MainApplication.Context);
label.SetTextIsSelectable(true);
label.LinksClickable = true;
label.Text = (e.NewElement as CopyableLabel).BindingText; // this line sets text into this label
SetNativeControl(label);
}
catch (Exception ex)
{
var msg = ex.Message;
}
}
protected override void OnElementPropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
{
base.OnElementPropertyChanged(sender, e);
if (e.PropertyName.Equals("BindingText"))
{
TextView textView = this.Control as TextView;
textView.Text = (Element as CopyableLabel).BindingText;
}
}
}
这是一个基类,
public class CustomLabel : View
{
public static readonly BindableProperty BindingTextProperty = BindableProperty.Create("BindingText", typeof(string),typeof(View),
string.Empty
);
public string BindingText
{
get
{
return (string)GetValue(BindingTextProperty);
}
set
{
SetValue(BindingTextProperty, value);
}
}
}