gorod’s diary

楽天ブログに過去記事あります

TextViewにdrawableにセットしたイメージと文字列を表示!

TextViewに前・後ろへ1つのアイコンを表示するのは結構簡単で、レイアウトに記述しちゃえば表示するんだけど…。

<!-- 前ver -->
<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/test"
    app:drawableStartCompat="@drawable/baseline_image_24"/>

文字列の間に入れるってなると、このやり方では出来なさそうなので…色々調べてみました!
参考になったHPはこちらです^ ^
皆さん、ありがとうございます!
【Android】TextViewの横に画像を表示するレイアウト方法 5選 #ConstraintLayout - Qiita
ImageSpan  |  Android Developers
ImageSpan で画像を TextView に 追加したいが、改行があってかつ、lineSpacingMultiplier、lineSpacingExtra を使っていると縦中央にならない | LOCAL-C BLOG

このHPをすべて合体しw、思った通りになった方法はこちら。

レイアウト

<TextView
    android:id="@+id/text"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"/>

Kotlin

val strSet = SpannableString("あいうえお かきくけこ")
val intHeight = 15
val imgSet = ContextCompat.getDrawable(this, R.drawable.baseline_image_24)!!
imgSet.setBounds(0, 0, intHeight, intHeight)
strSet.setSpan(ImageSpan(imgSet), 5, 6, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)

findViewById<TextView>(R.id.text).text = strSet

で、実行してみると
あいうえお画像かきくけこ
といった感じに表示出来ると思います^ ^

この方法、複数の画像もセット出来るのが良いですね^ ^

iOSの場合は
文字列+画像+文字列…

TextViewに設定

とか
文字列+画像+画像+文字列…

TextViewに設定

といったやり方なんですが
Androidの場合は
表示する文字列をすべてセット

何処に画像を突っ込むかの設定

TextViewに設定

といったやり方に変わるんですねぇ。
先に文字列をすべて作って、セットするところを付箋みたいに印になるような文字列にしちゃえば…後はindexofを活用して画像に切り替え!ってやれば、楽にPGが作れるかと思います^ ^

ふはー!今回もなかなかに難易度が高い(Android初心者にとってはw)内容でしたww
また新たに一つ知識が増えましたっす!

自分用の備忘録として、これも残しておこうかと思います!


ではでは!