質問: ### 前提・実現したいこと 初投稿となります。 現在、Xamarinでチャットアプリを作成しています。 その際に、Editor内の特定の文字列を画像に変更したいのですが、うまくいきません。 (例) 変換前:おはよう[おはよう]今日は天気がいいですね[にっこり] 変換後:おはよう[画像1]今日は天気がいいですね[画像2] 画像を例にすると以下の画像のように表示したいです(LINEを例にしています)。 ![イメージ説明](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/c304ff49575a841dbf01899e67bbc9fa.jpeg) いろんな検索条件で探してみましたが、Editor等の入力項目に絵文字のような画像を表示するなどの事例がなく、行き詰ってしまったため投稿することとなりました。 プログラミングを始めたばかりで不慣れなところが多く、説明不足な点も多いかと思いますが、ご教授の程よろしくお願いいたします。 ### 補足情報(FW/ツールのバージョンなど) 〜ツール〜 ・VisualStudio for Mac Ver8.0.9 ・Xamarin.Forms(3.6.0.344457)
回答: 完全な回答ではありません。 まず、難易度は高いと思います。 Xamarin.Forms の Editor はその要望には対応していないので、Xamarin.Forms だけでは実現できないです。 Xamarin.Forms の Editor は、Android では EditText、 iOS では UITextField が使用されるので、いわゆるカスタムレンダラーと呼ばれる箇所をカスタマイズして機能を実現することは 「技術的には可能です」。 Android では、 TextView や EditText に表示させるデータの一部に `ImageSpan` を使うと一部を画像にすることができます。 iOS 側は知り得ないのですが、おそらく同類の機能があると思います。 なので Xamarin.Android, Xamarin.iOS それぞれで、 「入力された文字列の中に "[おはよう]" があったら、その部分を `ImageSpan` あるいはそれ相当の機能部品 に置き換える」 という処理が必要になります。まずは 通常の Android アプリ開発として試されてみると良いと思います。 * ImageSpan で画像を TextView に 追加したいが、改行があってかつ、lineSpacingMultiplier、lineSpacingExtra を使っていると縦中央にならない - LOCAL-C BLOG チャットアプリではよく見る機能なので、簡単に実現できるライブラリがあるかも知れませんが、あまり聞いたことはなく、 Xamarin.Forms 向けとなるとなおさら「あるかな?」と思います。