我正在使用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>
我的问题是BoxView的宽度始终超出我尝试覆盖App.Xaml文件中的MinWidthRequest的文本,如下所示:
<Style TargetType="BoxView">
<Setter Property="MinimumWidthRequest" Value="3" />
</Style>
但这没有效果。我提供了屏幕截图供您查看。
仅供参考-黄色是标签的宽度。您不会看到任何紫色(StackLayout的背景色),因为StackLayout和Label的宽度相同。第二个屏幕快照显示了如果删除BoxView,屏幕的外观-即Label和StackLayout的大小正确。
对于如何解决这个问题,有任何的建议吗?
BoxView太长的屏幕截图,使标签和StackLayout太长
屏幕截图删除了BoxView,并且正确调整了标签和堆栈布局的大小
最佳答案
请注意默认的HorizontalOptions并且Label源自View:
除非另有说明,否则默认值为LayoutOptions.Fill。
在“使用指标”标签上添加HorizontalOptions="Start"
:
<Label x:Name="txtUseMetric" TextColor="Blue" FontSize="Small"
Text="{Binding UseMetricText}" BackgroundColor="Yellow"
HorizontalOptions="Start">
<BoxView BackgroundColor="Green" HeightRequest="1"
WidthRequest="{Binding Path=Width, Source={x:Reference txtUseMetric}"
HorizontalOptions="Start"/>