Articles in this section
Category / Section

How to use Font Awesome icons in Xamarin.Forms Accordion (SfAccordion)?

2 mins read

You can use FontAwesome icons in Xamarin.Forms Accordion. Please follow the steps below to work with FontAwesome icons,

STEP 1: Download the font icons on FontAwesome.com. You can also refer to the document here.

STEP 2: Place the ttf/otf file in the shared code project and set the Build action as follows,

Project

Location

Build action

Android

Assets

AndroidAsset

iOS

Resources

BundleResource

UWP

Assets

Content

In addition, add the name of the font file to the info.plist file of iOS project.

<key>UIAppFonts</key> 
<array> 
    <string>ExpanderIcons.ttf</string> 
</array> 

To use custom fonts in Xamarin.Forms, refer to the document here.

STEP 3: Define the font as StaticResource, in the ResourceDictionary.

<ContentPage.Resources>
    <ResourceDictionary>
        <OnPlatform x:TypeArguments="x:String" x:Key="FontAwesome">
            <On Platform="Android" Value="FontAwesomeRegular.otf#Regular" />
            <On Platform="iOS" Value="FontAwesome5Free-Regular" />
            <On Platform="UWP" Value="/Assets/FontAwesomeRegular.otf#Font Awesome 5 Free" />
        </OnPlatform>
    </ResourceDictionary>
</ContentPage.Resources>

STEP 4: Bind the FontFamily to the FontImageSource of Button.ImageSource using resource key. Also, bind the icon value to the Glyph property. You can also use Button.Command to update the icon at run time.

<accordion:SfAccordion x:Name="accordion" BindableLayout.ItemsSource="{Binding Info}" ExpandMode="SingleOrNone" HeaderIconPosition="Start">
    <BindableLayout.ItemTemplate>
        <DataTemplate>
            <accordion:AccordionItem >
                <accordion:AccordionItem.Header>
                    <Grid>
                        <Label TextColor="#495F6E" Text="{Binding Name}" VerticalOptions="Center" HorizontalOptions="StartAndExpand" HeightRequest="50" VerticalTextAlignment="Center"/>
                        <Button Grid.Column="1" HeightRequest="50" WidthRequest="50" Command="{Binding Path=BindingContext.FavouriteCommand, Source={x:Reference accordion}}" CommandParameter="{Binding .}" HorizontalOptions="EndAndExpand" VerticalOptions="CenterAndExpand" BackgroundColor="Transparent">
                            <Button.ImageSource>
                                <FontImageSource Glyph="{Binding FavouriteIcon}" FontFamily="{StaticResource FontAwesome}" Color="#ea2c62" Size="18" />
                            </Button.ImageSource>
                        </Button>
                    </Grid>
                </accordion:AccordionItem.Header>
                <accordion:AccordionItem.Content>
                    <Grid BackgroundColor="#e8e8e8" Padding="5,0,0,0">
                        <Label Text="{Binding Description}" VerticalOptions="Center"/>
                    </Grid>
                </accordion:AccordionItem.Content>
            </accordion:AccordionItem>
        </DataTemplate>
    </BindableLayout.ItemTemplate>
</accordion:SfAccordion>

STEP 5: Change the icon in the Button execution handler.

public class ItemInfoRepository
{
    public Command<object> FavouriteCommand { get; set; }
 
    public ItemInfoRepository()
    {
        FavouriteCommand = new Command<object>(OnFavouriteClicked);
    }
 
    private void OnFavouriteClicked(object obj)
    {
        var item = obj as ItemInfo;
        item.FavouriteIcon = item.FavouriteIcon == "\uf005" ? "\uf004" : "\uf005";
    }
}

View sample in GitHub

Demo image to use FontAwesome icon in Xamarin.Forms SfAccordion


Conclusion

I hope you enjoyed learning about how to use font awesome icons in Xamarin.Forms Accordion (SfAccordion).

You can refer to our Xamarin.Forms Accordion feature tour page to know about its other groundbreaking feature representations and documentation, and how to quickly get started for configuration specifications.

For current customers, you can check out our components from the License and Downloads page. If you are new to Syncfusion, you can try our 30-day free trial to check out our other controls.

If you have any queries or require clarifications, please let us know in the comments section below. You can also contact us through our support forumsDirect-Trac, or feedback portal. We are always happy to assist you!



Did you find this information helpful?
Yes
No
Help us improve this page
Please provide feedback or comments
Comments (0)
Please  to leave a comment
Access denied
Access denied