1
モバイルアプリケーションでアイコンを表示するためにフォントを使用しています。問題は、xamlファイルに直接書き込むとフォントアイコンが正しく表示されますが、実行時にフォントアイコンが設定されても機能しないことです。Xamarinフォーム:実行時にフォントアイコンがレンダリングされない
私は、各プラットフォーム用のカスタムラベルコントロールとカスタムレンダラーを作成してフォントアイコンを実装しました。私はAndroidでこの問題に直面していますが、まだiOSでチェックしていません。
カスタムラベル:Android用
using System;
using Xamarin.Forms;
namespace fonticon
{
public class IconLabel:Label
{
public IconLabel()
{
}
}
}
カスタムレンダラ:XAML後
using System;
using Android.Graphics;
using Xamarin.Forms;
using Xamarin.Forms.Platform.Android;
// This informs the compiler that we're using this class to render an IconLabel on this platform
[assembly: ExportRenderer(typeof(fonticon.IconLabel), typeof(fonticon.Droid.IconLabelRenderer))]
namespace fonticon.Droid
{
public class IconLabelRenderer:LabelRenderer
{
// sets the font for the platform-specific ui component to be our custom font
protected override void OnElementChanged(ElementChangedEventArgs<Label> e)
{
base.OnElementChanged(e);
// Note we're using the filename here, NOT the font family name
var font = Typeface.CreateFromAsset(Forms.Context.ApplicationContext.Assets, "flatuiicons.ttf");
Control.Typeface = font;
}
}
}
作品:
<?xml version="1.0" encoding="utf-8"?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:local="clr-namespace:fonticon"
x:Class="fonticon.fonticonPage">
<StackLayout x:Name="mainContainer">
<local:IconLabel x:Name="lblTestIcon" Text="" VerticalOptions="Center" HorizontalOptions="Center" FontSize="40" />
</StackLayout>
</ContentPage>
は、コードは動作しません次:実装の
lblTestIcon.Text = "";
ソースは以下の通りです:
問題は、記事で何とか言われた次のコードを使用して固定されているhttps://blog.bitbull.com/2017/05/10/using-a-custom-icon-font-in-xamarin-forms/comment-page-1/#comment-1209
あなたはあなたが投稿記事からステップ5をカバーしていますか?私はこの手順を数回忘れてしまい、フォントパックを見つけることができません。 ステップ5.あなたのAndroidプロジェクトにカスタムフォントをインポートしてください あなたのアセットディレクトリを右クリックしてAndroidプロジェクトを開き、[ファイルを追加]を選択します。ハードドライブで選択したフォントファイルに移動し、プロジェクトに追加します。ファイルが追加されたら、右クリックして 'Build Action'が 'AndroidAsset'に設定されていることを確認します。 –
問題は、記事で言われた次のコードを使用して修正されましたが、何とか私はそれを逃しました。 Text = System.Net.WebUtility.HtmlDecode( "&#xe012;"); – dsakpal