2014年3月7日金曜日

Android - ClickableSpanのアンダーラインを消す

特定の文字列にClickableSpanを適用させると、デフォルトではリンクにアンダーラインがつくのですが、このアンダーラインを消したかったので、消し方をメモ。
public class TestFragment extends Fragment {
    public static class NonUnderlinedClickableSpan extends ClickableSpan
    {
        @Override
        public void updateDrawState(TextPaint ds) {
            ds.setColor(Color.BLUE);
            ds.setUnderlineText(false);
        }

        @Override
        public void onClick(View widget) {
        }
    }
}
ClickableSpanを継承したクラスを作成し、updateDrawState()をオーバーライドします。updateDrawState()の中で、setUnderlineText(false)にしてあげるとアンダーラインが消えます。

このupdateDrawState()の中でsetColor()を使うと、文字の色も変えることが出来ます。

あと、URLSpan()でも同じ方法で、アンダーラインを消したり、文字と色を変えることが出来ます。
public class TestFragment extends Fragment {
    public static class NonUnderlinedURLSpan extends URLSpan {
        public NonUnderlinedURLSpan(String url) {
            super(url);
        }

        @Override
        public void updateDrawState(TextPaint ds) {
            ds.setColor(Color.BLUE);
            ds.setUnderlineText(false);
        }
    }
}
 
 
こんなところで。

0 件のコメント:

コメントを投稿