Xamarin 表单:根据字符数增加编辑器高度
Xamarin forms: Increase the editor height based on the character count
我的 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>
现在是built-in到Xamarin.Forms。只需使用 Editor
控件并将 AutoSize
属性 设置为 TextChanges
。请注意,当您设置 HeightRequest
.
时,自动调整大小将不起作用
这里有更多信息:https://docs.microsoft.com/en-us/xamarin/xamarin-forms/user-interface/text/editor
更新:根据评论,我们解决了用 Grid 替换 StackLayout 可以帮助您实现结果。这是因为 StackLayout 只占用 space,而 space(最初)被其 children 占用。网格能够动态增长。
我的 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>
现在是built-in到Xamarin.Forms。只需使用 Editor
控件并将 AutoSize
属性 设置为 TextChanges
。请注意,当您设置 HeightRequest
.
这里有更多信息:https://docs.microsoft.com/en-us/xamarin/xamarin-forms/user-interface/text/editor
更新:根据评论,我们解决了用 Grid 替换 StackLayout 可以帮助您实现结果。这是因为 StackLayout 只占用 space,而 space(最初)被其 children 占用。网格能够动态增长。