Xamarin 表单:根据字符数增加编辑器高度

问题描述 投票:0回答:2

我的 xamarin 表单项目中有一个如下所示的编辑器。

当我在上面输入消息时,我需要根据字符数增加编辑器的高度。

这是我底部的完整代码,我添加了一个框架布局以使入口角为圆形:

<StackLayout
                HorizontalOptions="FillAndExpand"
                x:Name="tweetBox"
                VerticalOptions="End"
                Margin="0,0,0,10"
                BackgroundColor="#f2f2f2"
                Orientation="Horizontal">

                <Image 
                     WidthRequest="25"
                     HeightRequest="25"
                     VerticalOptions="Center"
                     Source="ic_add_blue_xx.png"
                     Margin="10,5,-5,5">
                    <Image.GestureRecognizers>
                        <TapGestureRecognizer
                            Tapped="ShowPicureOptions"
                            NumberOfTapsRequired="1" />
                    </Image.GestureRecognizers> 
                </Image>

                <Frame
                    Padding="0"
                    Margin="5,5,0,5"
                    HorizontalOptions="FillAndExpand"
                    CornerRadius="10">

                    <Editor 
                        x:Name="tweetText"
                        HorizontalOptions="FillAndExpand"
                        VerticalOptions="Center"
                        FontFamily="Bold"
                        BackgroundColor="White"
                        TextColor="#959595"
                        AutoSize="TextChanges"
                        PlaceholderColor="#959595"
                        Placeholder="  Enter Message..."/> 
                </Frame>

                <Image 
                    VerticalOptions="Center"
                    WidthRequest="25"
                    Margin="5,5,10,5"
                    HeightRequest="25"
                    HorizontalOptions="End"
                    Source="ic_send_xx.png"> 
                    <Image.GestureRecognizers>
                        <TapGestureRecognizer
                            Tapped="SendTweet_Icon_Clicked"
                            NumberOfTapsRequired="1" /> 
                    </Image.GestureRecognizers>
                </Image>
            </StackLayout>
xamarin.forms height editor
2个回答
9
投票

它现在内置于 Xamarin.Forms 中。只需使用

Editor
控件并将
AutoSize
属性设置为
TextChanges
。请注意,当您设置
HeightRequest
时,自动调整大小将不起作用。

更多信息请访问:https://learn.microsoft.com/en-us/xamarin/xamarin-forms/user-interface/text/editor

更新:根据评论,我们解决了用 Grid 替换 StackLayout 可以帮助您实现结果。这是因为 StackLayout 只占用其子级(最初)占用的空间。网格能够动态增长。


0
投票

我在 Android 上遇到了类似的问题,并且能够通过在自定义渲染器中将

IsSingleLine
属性设置为
false
来解决该问题。

这是渲染器的要点:

    protected override void OnElementChanged (ElementChangedEventArgs<Editor> e)
    {
        base.OnElementChanged (e);
        if (Control != null)
        {
            Control.SetSingleLine(false);
        }
    }

官方 Xamarin.Forms 文档指出这一点很奇怪

Editor控件用于接受多行输入。

但是,其在 Android 上的默认设置不允许多行。

© www.soinside.com 2019 - 2024. All rights reserved.