アプリ開発備忘録

PlayStationMobile、Android、UWPの開発備忘録

[Android]Android6.0からSpannableStringのSpanの処理が変わった?

SpannableStringでは検証してなくてSpannableStringBuilderで検証してます。

やりたいこと

・TextViewを一部をリンク化してそこにイベント追加
・リンク化されてないところをクリックにも共通のイベント追加

要するに、赤に個別にイベントを設定してそれ以外の所は共通のイベント
f:id:matsudamper:20160524201436p:plain

やったこと

・setSpanでテキストをリンク化
・全体をリンク化

sb.setSpan(new ClickableSpan() {
    @Override
    public void onClick(View widget) {

    }

}, 0, sb.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

※TextViewのOnClickを使うと両方のイベントが発火されるのでこの様にした。

挙動

Android6.0以前の実機、エミュレータ

TextViewの一部リンク化した部分をクリックするとイベント発火
リンク化されてないところをクリックするとイベント発火

Android6.0のエミュレータ

TextViewの一部リンク化した部分をクリックするとリンク化されてないところと同じイベント発火
リンク化されてないところをクリックするとイベント発火

回避策

面倒だがリンク化されてない部分に一つづつsetSpanするしかない。