Xamarin表单输入字段在iOS中缩放比屏幕大小更大

时间:2017-12-15 15:41:14

标签: ios xaml xamarin xamarin.forms

我有一个显示电子邮件地址的ContentPage。当页面被推到导航堆栈时,页面就会被打开。

var contextToBind = new WorkOrderEMailViewModel(tempBoundItem.No, tempBoundItem.Name, tempBoundItem.Description1);
var page = new WorkOrderEMailPage() { BindingContext = contextToBind };
await Navigation.PushAsync(page);

对象WorkOrderEMailViewModel有一个名为To的属性,用于存储邮件地址。

Xaml看起来像这样。 Entry字段存储邮件地址。

<StackLayout HorizontalOptions="FillAndExpand" Orientation="Horizontal" >
   <Entry Text="{Binding BoundItem.To}" HorizontalOptions="FillAndExpand"></Entry>
   <Button Text="..." VerticalOptions="EndAndExpand" Command="{Binding ListItemsButtonTappedCommand}"></Button>
</StackLayout>

所以这就是问题的起点。如果To的值很长,则输入字段的缩放比屏幕大,因此您无法看到Entry字段旁边的结尾和按钮。

以下屏幕截图将清楚说明我想要的内容。这是第一个Entry

这是短文本的样子,以及长文本的样子。

Pic1

这就是它的实际情况。

Pic2

我尝试使用HorizontalOption,但没有成功。

更新

根据Clint Landry的建议,我将xaml更改为:

<Grid>
     <Grid.RowDefinitions>
          <RowDefinition Height="40" />
     </Grid.RowDefinitions>
     <Grid.ColumnDefinitions>
          <ColumnDefinition Width="*" />
          <ColumnDefinition Width="30" />
     </Grid.ColumnDefinitions>
     <Entry Text="{Binding BoundItem.To}" Grid.Row="0" Grid.Column="0"></Entry>
     <Button Text="..." Command="{Binding ListItemsButtonTappedCommand}" Grid.Row="0" Grid.Column="1"></Button>
</Grid>

1 个答案:

答案 0 :(得分:2)

使用VerticalOptions =&#34; FillAndExpand&#34;的设置将页面换行到父堆栈布局中Horizo​​ntalOptions =&#34;填写&#34 ;.将子项更改为网格(推荐)或Horizo​​ntalOptions =&#34;填充&#34;取向=&#34;水平&#34 ;.完整的xaml会有所帮助,因为感觉像其他父xaml标签正在影响它。

<StackLayout x:Name="stackContent" VerticalOptions="FillAndExpand"    HorizontalOptions="Fill">
<StackLayout HorizontalOptions="FillAndExpand" Orientation="Horizontal" >
   <Entry Text="{Binding BoundItem.To}" HorizontalOptions="FillAndExpand"></Entry>
   <Button Text="..." VerticalOptions="EndAndExpand" Command="{Binding ListItemsButtonTappedCommand}"></Button>
</StackLayout>
</Stacklayout>