TextView内の一部の文字色や大きさの変更
Stringの文字列を検索して、該当文字を赤くしたい、といった場合に使います。
結論は簡単です。Html.fromHtmlを用いて表記します。そう、HTMLです。
コードを見てみましょう
public class MainActivity extends AppCompatActivity {
TextView textView;
String stringHtmlForTextView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = (TextView)findViewById(R.id.textView);
stringHtmlForTextView =
"こんなのが江戸っ子なら江戸には生れたくないもんだと心中に考えた。" +
"そのほか<font color=\"red\">一人一人</font>についてこんな事を書けばいくらでもある。" +
"しかし<big>際限</big>がないからやめる。(坊ちゃん(夏目漱石)より)";
textView.setText(Html.fromHtml(stringHtmlForTextView));
}
}
結果は、
となります。
使用できるHTMLタグと注意点
このHtml.fromHtml、タグは全て使えるわけではありません。また、<font>タグでサイズの指定はできません。<big>タグを用います。<BR>についても</BR>としては使えません。<BR>と記述します。
あくまで見た目の問題ですから、実際のところ<font><br><strong>を使うくらいではないでしょうか。
これ以上のことをしたいとすればwebViewでサイトを表示してしまったほうが楽かもしれません。
replaceでこんな使い方を
public class MainActivity extends AppCompatActivity {
TextView textView;
String stringHtmlForTextView;
String searchWord;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = (TextView)findViewById(R.id.textView);
stringHtmlForTextView =
"こんなのが江戸っ子なら江戸には生れたくないもんだと心中に考えた。" +
"そのほか一人一人についてこんな事を書けばいくらでもある。" +
"しかし際限がないからやめる。(坊ちゃん(夏目漱石)より)";
searchWord = "江戸";
stringHtmlForTextView = stringHtmlForTextView.replace(searchWord,
"&lt;strong&gt;&lt;font color=\"red\"&gt;"+searchWord+"&lt;/font&gt;&lt;/strong&gt;");
textView.setText(Html.fromHtml(stringHtmlForTextView));
}
}