How to change application icon in Xamarin.Forms?
Updating Icon and Name (Android)
If you changed the icon file name please ensure you update the Icon
reference in MainActivity.cs
:
[Activity(Label = "MyName", Icon = "@mipmap/myicon", Theme = "@style/MainTheme"]
public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
{
}
You should also update the names of icon.xml
and icon_round.xml
in the mipmap-anydpi
folder to match to new icon name. If launcher-foreground.png
was renamed then update the value of <foreground...>
in corresponding icon.xml
.
Summary (Android)
- Replace the
png
's in mipmap folders with your new icon - If name was changed, update
Icon
value inMainActivity.cs
- If name was changed, update name of (or create a new copy of)
icon.xml
andicon_round.xml
- If name of
launcher-foreground.png
was changed then update value inicon.xml
. Eg:<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android"> <background android:drawable="@color/my_launcher_background"/> <foreground android:drawable="@mipmap/my_launcher_foreground"/> </adaptive-icon>
- If name wasn't changed and you've cleaned and re-built project but still your new icons are not deploying: Delete
obj
folder from Android project directory
Details and Issues if not updating (Android)
Xamarin Forms/Android puts 2 icons in each mipmap folder (mipmap-mdpi, mipmap-hdpi, mipmap-xhdpi, etc) - icon.png
and launcher-foreground.png
.
Replace both these images in each of the mipmap folders. I kept the same names but it should be possible to use a different name.
If you rename launcher-foreground.png
then you must update the values in icon.xml
and icon_round.xml
(or their equivalent new names). The value in the <foreground...>
tag references the icon/png. So, if launcher-foreground.png
was updated to my_launcher-foreground.png
this should be reflected in the icon.xml
(see step 4 in summary above).
If the icons still don't update even after cleaning/re-building it could be that the original/default icons still existed in the Android project obj
folder. The solution is to delete the obj
folder from the Android project directory.
iOS
For iOS, please see Managing Icons with Asset Catalogs. A summary taken from the linked page is provided below:
For icons, a special
AppIcon
image set can be added to theAssets.xcassets
file in the app's project.To use an Asset Catalog, do the following:
- Double-click the Info.plist file in the Solution Explorer.
- Click on the Visual Assets tab and click on the Use Asset Catalog button under App Icons.
- From the Solution Explorer, expand the Asset Catalog folder.
- Double-click the Media file to open it in the editor.
- Under the Properties Explorer the developer can select the different types and sizes of icons required.
- Click on given icon type and select an image file for the required type/size.
- Click the Open button to include the image in the project and set it in the xcasset.
MacOs
The guide for MacOs is Application icon for Xamarin.Mac apps. You need to consider the following steps:
- Required image sizes and filenames
- Packaging the icon resources
- Using the icon
detailed in the linked docs above.
For Android try to set the icon app like this:
[Activity(Icon = "@drawable/icon")]
public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsApplicationActivity
{
.....
}
Make sure that you have changed all the icon images on all drawable folders ( drawable, drawable-hdpi, drawable-xhdpi and drawable-xxhdpi ).
For iOS I like set the app icons and splash screen with Asset Catalogs, here you can find a guide to how to use it:
https://developer.xamarin.com/guides/ios/application_fundamentals/working_with_images/app-icons/
For iOS in visual studio...
Step1: Generate all the app icons from https://appicon.co/
Step2: In solution explorer, under iOS project, expand 'Asset Catalogs' and double click on 'Assests'. You can change the existing 'AppIcon' icons or Add a new Asset and attach the icons.
This is how you add a new asset...
Step3: In solution explorer, under iOS project, double click on Info.plist. Go to 'Visual Assets' tab, click on 'App Icons' and change the 'Source' to the asset that you just created.
Done.
Hope this helps someone!