はじめに
androidのTextViewリンク化(多言語)について、自分が下記のものを調べたけど、
うまく行けなかったので、色々を試して、簡単に共有します。
問題点
TextView内の多言語リンクうまく表示できないこと
resourcesファイル
<resources xmlns:tools="http://schemas.android.com/tools">
<string name="link_text">Here is <a href="http://www.google.com">google</a> page </string>
</resources>
xmlファイル
<TextView
android:id="@+id/link_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:autoLink="web"
android:linksClickable="true"
android:gravity="center"
android:textSize="18sp" />
fragmentファイル
val linkText = binding.linkText
linkText.isClickable = true
linkText.movementMethod = LinkMovementMethod.getInstance()
val infoText =
rootContext.getString(R.string.link_text)
linkText.text =
Html.fromHtml(infoText, HtmlCompat.FROM_HTML_MODE_COMPACT)
結果下記の図
googleのリンク化されない
解決方法
xmlファイルの
autoLink="web"
android:linksClickable="true"
この二つが要らない。
注意点として:
HTML文字列は、バックエンドまたはリソースファイルから取得できます。
テキストをリソース文字列として配置する場合は、必ずCDATAタグを追加してください。
例:
``normal text & link text]]>.....```
<TextView
android:id="@+id/link_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:autoLink="web"
android:linksClickable="true"
android:gravity="center"
android:textSize="18sp" />
今回の例
<string name="link_text">Here is <![CDATA[<a href="http://www.google.com">google</a>]]> page </string>
HtmlCompatすごく使いやすいものと思いますので、引き続きこの記事で更新する予定です。