アイコンフォントを Xamarin.Android プロジェクトに組み込む
- Assets フォルダにアイコンフォントのファイル(.ttf)を追加。
- Assets 直下ではなく fonts フォルダを作って、その下に追加してもいい。
- 追加したファイルのビルドアクションを AndroidAsset にする。
Bitmap に変換して使う
アイコンフォントを Bitmap に変換するメソッドを用意しておく。
using Android.Content; using Android.Graphics; using Android.Util; public static class BitmapEx { public static Bitmap FromFontAsset( Context context, string path, string glyph, float size, Color color) { var paint = new Paint { TextSize = TypedValue.ApplyDimension( ComplexUnitType.Dip, size, context.Resources.DisplayMetrics), Color = color, TextAlign = Paint.Align.Left, AntiAlias = true, }; var typeface = Typeface.CreateFromAsset(context.Assets, path); paint.SetTypeface(typeface); var width = (int)(paint.MeasureText(glyph) + .5f); var baseline = (int)(-paint.Ascent() + .5f); var height = (int)(baseline + paint.Descent() + .5f); var image = Bitmap.CreateBitmap(width, height, Bitmap.Config.Argb8888); var canvas = new Canvas(image); canvas.DrawText(glyph, 0, baseline, paint); return image; } }
ImageView とかに表示するには画像に変換してやる必要があるので、このメソッドを使う。
var bitmap = BitmapEx.FromFontAsset( context: Context, path: "Assets を起点にしたアイコンフォントファイルの相対パス", glyph: "アイコンの Unicode", size: 20, color: Android.Graphics.Color.White); imageView.SetImageBitmap(bitmap);