javaでは、Html.fromHtml(何かの変数)メソッドを使うことでhtmlタグでTextView
を操作することが出来ます。
部分的に強調したいところがあったりTextViewをリンクとして
使いたくなった時に色を変えたい時が主な用途です。
まず、sring.xmlで文字を追加します。
<pre><string name="sample" translatable="false">※[<font color=\"navy\">%s</font>]</string></pre>
stringタグを作った後に色を変えたい箇所を<と>で囲みます。囲まれている
$sが今回表示したい文字になります。
color=\”何かの色\の形式で好きな色に変えることができます。
続いてxml↓
<pre><TextView android:id="@+id/text_sample" android:layout_width="150sp" android:layout_height="wrap_content" android:layout_marginStart="10dp" android:layout_marginEnd="20dp" android:layout_marginTop="110dp" android:textColor="#444444" android:background="@drawable/selector" android:textSize="16sp" android:textStyle="bold" /></pre>
後にコード上で文字列を入れるのでテキストには何も設定しません。
ですがこれだけではこのまま表示されてしまうので、次にMainActivityに
実際に文字を入れていきます。
まず、String.formatでstring.xmlから文字を抽出しています。第一引数
が形式、第二引数が入れたい文字となっております。
次に、入れたい文字列ですが、ここではhogehogeが先ほどのstring.xmlの%sに入っていきます。
最後にsetTextの中でHtml.fromHtml(text)でhtmlタグを使って
@InjectView(R.id.text_sample) TextView sampleText; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_help); ButterKnife.inject(this); String text = String.format(getText(R.string.sample).toString(), "hogehoge"); sampleText.setText(Html.fromHtml(text)); }
string.xml内の文字列を翻訳して色が変われば無事終了となります。簡単
なコード数行で済むのでhtml経験者ならもっと自在に扱えそう・・・・。
でもcssなしでここまでカスタマイズできるなら上等かなぁと思います。