株式会社シーポイントラボ | 浜松のシステム・RTK-GNSS開発

【java】SpannableStringBuilderを使ってテキストをカスタマイズする

javaにおいてテキストの色を変えたりリンク化させるにはSpannableStringBuilderを使うことで

実現することができます。

SpannableStringBuilderとは、コード上に定義されているテキストを対象としたマークアップ

向けのオブジェクトのことです。

htmlさながらにテキスト色を変更したりテキストをボタン化することができたりと割と万能な様子。

今回はある列番になったらテキストが変わるまでの一連の流れを紹介します。

 


SpannableStringBuilder sb = new SpannableStringBuilder();

sb.setSpan(new RelativeSizeSpan(1.2f), int, int, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

一つ目の引数は、希望するテキストサイズを取っています。

二つ目の引数はテキスト変更の初め。テキストの見た目はここで指定した値から

始まります。

三つ目の引数はテキスト変更の終わり。ここで指定した値まで処理をします。

最後の引数はテキスト挿入時の振る舞い。フラグ指定。SPAN_EXCLUSIVE_EXCLUSIVEは定数です。

四つ指定してsetTextできればokです。

自分は元から定義してあったテキストを掘り出して再度加工したかったので

以下のようにした。

java部分

</pre>
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_collection);

TextView text = findById(this, R.id.title);
SpannableStringBuilder sb;
sb = textsizechange(text);
text.setText(sb);
}
public SpannableStringBuilder textsizechange(TextView text){
String title = text.getText().toString();
String[] splitTitle = title.split("\n", 0);
SpannableStringBuilder sb = new SpannableStringBuilder();
sb.append(text.getText().toString());
sb.setSpan(new RelativeSizeSpan(1.2f), splitTitle[0].length(), sb.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
return sb;
}
<pre>

 

xml部分

 

</pre>
<pre><TextView
            android:id="@+id/title"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="#fff"
            android:paddingBottom="10dp"
            android:paddingStart="20dp"
            android:paddingEnd="20dp"
            android:paddingTop="10dp"
            android:text="ようこそおいでなさりました!\nさあさごゆっくりとくつろいでくださいまし"
            android:gravity="center"
            android:textSize="16sp"
            android:textColor="#000"
            android:textStyle="bold" />

SpannableStringBuilderの使い方が理解できればhtmlほどではないですが自由にテキストカスタマイズが

にできるのでおすすめです。

  • この記事いいね! (0)
モバイルバージョンを終了