0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Xamarin.FormsでMaterial Iconをコードビハインドから使う方法

Posted at

結論

  • \uffffという風に4桁の16進数の前に\uをつけたらOK
var label = new Label();
label.Text = "\ue8b6"; // Search icon
label.FontFamily = "Material";

概要

Xamarin.Formsでマテリアルデザインのアイコンを使いたいことがあると思います。
私の作成しているアプリでもマテリアルデザインのアイコンを使用していました。
基本的にはXAMLからすべて設定を行っていたのでしばらくは問題無く使えていたのですが、ある時どうしてもコードビハインドに処理を記述する必要が出てきました。
さらに、その処理の中でアイコンを使う必要があったのですが、XAMLで使用するときと同じように設定しても動きませんでした。

(XAMLで使う方法)
Xamarin.Forms でアイコンフォントを使う

上記記事にもあるように、XAMLの場合は以下のように指定します。

<Label Text="&#xe8b6;" FontFamily="Material"/>

上記でTextに指定している&#xe8b6;ですが、このままコード側で指定しても動いてくれません。
e8b6の部分はアイコンのIDのようなものなので、その前後についている奇妙な文字列に秘密がありそうです。

よくよく調べていると見つけました。

文字参照は 10 進数または 16 進数の文字番号を使って次のように記述します。

&#(10進数の文字番号);
&#x(16進数の文字番号);

XAMLというよりもXMLの仕様なんですね :thinking:

ということで奇妙な文字列の意味はわかりました。
あとはコード側でどうやって表現するかですが、上記より16進数ということがわかったので16進数を文字列として表現する方法を探します。

\u 16進表記のUnicode文字
※「\u」に続けて16進数4桁を記述する

\uで良さそうです。

ということで、XAMLでは&#xe8b6;と指定していたものは\ue8b6としてあげることで正しく表示されました!

参考URL

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?