我正在使用BoxView完成我的应用程序中的下划线。我有几个非常短的标签-诸如“是”或“否”之类的文本。这是其中一个带有BoxView的标签的XAML下划线:
<StackLayout Orientation="Vertical" Grid.Row="5" Grid.Column="1" Margin="0,4,0,4" HorizontalOptions="Start" BackgroundColor="Purple" MinimumWidthRequest="1">
<Label x:Name="txtUseMetric" TextColor="Blue" FontSize="Small" Text="{Binding UseMetricText}" BackgroundColor="Yellow">
<Label.GestureRecognizers>
<TapGestureRecognizer Tapped="Value_Tapped" CommandParameter="usemetric" />
</Label.GestureRecognizers>
</Label>
<BoxView BackgroundColor="Green" HeightRequest="1" MinimumWidthRequest="1" />
</StackLayout>
Run Code Online (Sandbox Code Playgroud)
我的问题是BoxView的宽度始终超出我尝试覆盖App.Xaml文件中的MinWidthRequest的文本,如下所示:
<Style TargetType="BoxView">
<Setter Property="MinimumWidthRequest" Value="3" />
</Style>
Run Code Online (Sandbox Code Playgroud)
但这没有效果。我提供了屏幕截图供您查看。
仅供参考-黄色是标签的宽度。您不会看到任何紫色(StackLayout的背景色),因为StackLayout和Label的宽度相同。第二个屏幕快照显示了如果删除BoxView,屏幕的外观-即Label和StackLayout的大小正确。
对于如何解决这个问题,有任何的建议吗?
<StackLayout>
<Label HorizontalOptions="Center" VerticalOptions="Center" Text="Hello"/>
<Slider/>
</StackLayout>
<StackLayout HorizontalOptions="Center" VerticalOptions="Center" >
<Label Text="Hello" />
<Slider />
</StackLayout>
Run Code Online (Sandbox Code Playgroud)
上述两个代码的输出是相同的,任何人都可以解释为 stacklayout 指定垂直和水平选项与在 label 处定义这些属性之间的区别吗?