Xamarin为TextView高度问题表单自定义视图渲染器

时间:2018-03-12 12:21:02

标签: xamarin.forms xamarin.android custom-renderer

我想将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);
            }
        }

    }

0 个答案:

没有答案