Spannable.SPAN_COMPOSINGは、既存の装飾を削除し、新たに装飾を設定するフラグです。
ただし、「既存の装飾を削除」にクセがあります。これに関してSpannable.SPAN_COMPOSING その2に書いておきました。
sample codeは下記のとおりです。
public class TextViewActivity extends Activity
implements
OnClickListener
{
final int iMaxChar = 300;
int iCounter;
Button bu;
TextView tv;
SpannableString ss;
BackgroundColorSpan spanBC;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
int i;
char c = '亜';
StringBuilder sb;
bu = (Button)findViewById(R.id.Button);
bu.setOnClickListener(this);
tv = (TextView)findViewById(R.id.TextView);
//表示する文字列の作成
sb = new StringBuilder();
for(i=0; i<iMaxChar; i++) sb.append(c++);
//装飾の作成
ss = new SpannableString(sb.toString());
spanBC = new BackgroundColorSpan(0xff880000);
//第ゼロ番目の文字に装飾を施す。
iCounter = 0;
ss.setSpan(spanBC, iCounter, iCounter+1, Spannable.SPAN_COMPOSING);
tv.setText(ss);
}
@Override
public void onClick(View v) {
if(v==bu){//クリックした場合
iCounter++;//次の文字に移行する。
if(iCounter>=iMaxChar) iCounter = 0;
//前回の装飾は無くなり、次の文字が装飾される。
ss.setSpan(spanBC, iCounter, iCounter+1, Spannable.SPAN_COMPOSING);
tv.setText(ss);
return;
}
}
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<Button
android:id="@+id/Button"
android:text="@string/Button"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
</Button>
<TextView
android:id="@+id/TextView"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
</TextView>
</LinearLayout>
0 件のコメント:
コメントを投稿