【androidjava】SpannableStringBuilderを使ったxmlテキストの加工法

最近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" />

 

なお

>株式会社シーポイントラボ

株式会社シーポイントラボ

TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:〒432-8003
   静岡県浜松市中央区和地山3-1-7
   浜松イノベーションキューブ 315
※ご来社の際はインターホンで「316」をお呼びください

CTR IMG