Вы можете сделать пользовательский элемент управления Xamarin Forms .Содержимое может быть примерно таким:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.5* />
<ColumnDefinition Width="0.5* />
</Grid.ColumnDefinition>
<Image x:Name="gradientImage" Grid.Row="0" Grid.ColumnSpan="2" Margin="10,10,10,0" />
<Frame x:Name="progressFrame" Grid.Row="0" Width="{Binding Progress}" HorizontalOption="End" BackgroundColor="Gray" ... />
<!-- Labels -->
<Label x:Name="startLbl" Grid.Row="1" Grid.Column="0" Text="{Binding startLabel}" HorizontalOption="Start" />
<Label x:Name="endLbl" Grid.Row="1" Grid.Column="1" Text="{Binding endLabel}" HorizontalOption="End" />
</Grid>
Для индикатора выполнения градиента, вместо CustomRenderers вы можете использовать изображение.
- это изображение будетбыть градиентом полной ширины
- над этим изображением, как МАСКА , есть рамка.Вы должны вычислить ширину кадра в зависимости от значения прогресса.==> Когда изображение будет прогрессировать, оно будет «появляться» в виде градиента.
Надеюсь, вы понимаете концепцию :) Затем в коде (в вашей ViewModel?) Управляйте началом / концомзначения меток и вычисление значения «progress» ... Я полагаю, вам потребуется сделать привязывающий преобразователь для : "progress" ==> "bar Width" ...
Скажи мне, если это ясно