Xamarin.Forms Button Padding отключает FontIcon - PullRequest
0 голосов
/ 06 февраля 2020

У меня есть кнопка, использующая значок шрифта из Material Design Icons . (Отображение этого значка, как и нескольких других, работает нормально, поэтому для краткости конвертер опущен). Вот код XAML для кнопки:

<Button Margin="10"
        Padding="0"
        BackgroundColor="{StaticResource Background}"
        CornerRadius="25"
        FontFamily="{StaticResource MaterialFontFamily}"
        FontSize="36"
        HeightRequest="50"
        HorizontalOptions="EndAndExpand"
        Text="{Binding PlusIcon, Converter={StaticResource NameToIcon}}"
        WidthRequest="50" />

Как вы можете видеть, я установил для отступа значение 0, но он по-прежнему отображается следующим образом:

enter image description here

Просто чтобы проверить, я сделал это и с обычным текстом:

enter image description here

Выглядит хорошо, если я установил размер шрифта меньше, но это не то, что я хочу:

enter image description here

Как принудительно удалить прокладку? И почему текст не центрируется при изменении размера шрифта? Проблема возникает на IOS и Android.

1 Ответ

1 голос
/ 06 февраля 2020

Вы должны использовать ImageButton с FontImageSource

Сначала вы объявляете FontImageSource в ваших стилях:

<FontImageSource x:Key="IconBikeSmall"
                 FontFamily="{StaticResource FontAwesome}"
                 Glyph="{x:Static styles:IconFont.Biking}"
                 Size="{StaticResource SizeSmallIcon}"
                 Color="{StaticResource SecondaryColor}" />

Затем вы просто используете его как значение для Source свойство вашей кнопки:

   <ImageButton Source="{StaticResource IconBikeSmall}"
                HorizontalOptions="Center"
                VerticalOptions="CenterAndExpand" />

Или даже используйте его прямо так:

  <ImageButton HorizontalOptions="Center"
               VerticalOptions="CenterAndExpand" >
      <ImageButton.Source> 
          <FontImageSource
                 FontFamily="{StaticResource FontAwesome}"
                 Glyph="{x:Static styles:IconFont.Biking}"
                 Size="{StaticResource SizeSmallIcon}"
                 Color="{StaticResource SecondaryColor}" />
      </ImageButton.Source> 
  </ImageButton>                    
...