我有一个Xamarin Forms项目(v2.5),在我的Xaml文件中有一个文本输入控件。我需要条目的高度高于默认值,因此我指定HeightRequest为60,这可以正常工作,除了文本本身与Entry控件的顶部对齐之外。
<Entry Text="{Binding CustomerNameText}" HeightRequest="60" VerticalOptions="FillAndExpand" HorizontalOptions="FillAndExpand" IsEnabled="{Binding CustomerNameEntryEnabled}" Focused="Entry_Focused" Unfocused="Entry_Unfocused" />
它看起来像:
我添加了一个自定义渲染器:
public class CustomEntryRenderer : EntryRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<Entry> e)
{
base.OnElementChanged(e);
if(this.Control != null)
{
this.Control.VerticalAlignment = Windows.UI.Xaml.VerticalAlignment.Center;
this.Control.Height = 60;
}
}
}
但这不管用。Xaml中的HeightRequest似乎不再起作用了,所以我在自定义渲染器中添加了高度。但文本对齐保持在顶部。
谁能告诉我如何让文本垂直居中?
4条答案
按热度按时间lzfw57am1#
Entry
对应的本机控件是UWP app中的TextBox
,详情请参见Renderer Base Classes and Native Controls。VerticalAlignment
属性意味着在父控件中将当前control
设置为垂直居中,而不是针对内部的文本。只有像TextAlignment
这样的属性才会对文本生效。由于UWP应用程序中的Textbox
没有VerticalTextAlignment
属性,因此无法直接将文本设置为垂直居中。但是您可以更改TextBox
的样式模板作为解决方法。为
Textbox
创建新样式,并将VerticalAlignment
属性设置为ControlTemplate
中的ContentPresenter
和ScrollViewer
控件居中。然后在自定义呈现中应用样式。App.xaml
中的样式自定义渲染:
5t7ly7z52#
我不认为这是需要一个自定义渲染器,只是中心和扩大。
zsohkypk3#
我知道这很晚了,但下面的代码适用于Android在Entry中居中文本,它也适用于UWP:
告诉我,如果有帮助的话
6tr1vspr4#
试试这个:
如果这不起作用,请使用自定义渲染器