2011-11-13 18 views
7

カスタム描画可能(リソースから)を、TextViewのスパン、特にClickSpanに設定する方法はありますか?Android - カスタム描画可能な背景をClickSpanに設定

Googleは、スパンのupdateDrawState()をオーバーライドすることによって、ハイライトや色の変更などの無効化に関する多くの回答を返していますが、バックグラウンドに描画可能オブジェクトを設定する方法はありません。

私はDynamicDrawableSpanで可能性を見ていますが、ClickableSpanと一緒に動作させることはできません。これは私のコードです:

public class MyDynamicDrawableSpan extends DynamicDrawableSpan 
{ 
    private Context c; 

public MyDynamicDrawableSpan(Context context) { 
    super(); 
    c = context; 
} 

@Override 
public Drawable getDrawable() { 
    Resources res = c.getResources(); 
    Drawable d = res.getDrawable(R.drawable.span_background); 
    return d; 
} 

}

そして、これは私がそれを使用する方法です:

SpannableStringBuilder ssb = new SpannableStringBuilder(text); 
MyDynamicDrawableSpan ddSpan = new MyDynamicDrawableSpan(getApplicationContext()); 
... 
ssb.setSpan(ddSpan, start, end, 0); 
ssb.setSpan(new ClickableSpan(... 

これは動作しません。スパンを見えないようにするだけです。どんな明るいアイデアですか?

+0

あなたのspan_background.xmlファイルはどのように見えますか?シェイプドローブを作成して同様のことを試しましたが、スパンは不可視として表示されます。なぜなら、形状ドロアブルは、ボタンのようなビューの背景に設定する必要があるからですか? http://stackoverflow.com/questions/6674657/how-change-button-shape-using-xml-or-using-java-code – toobsco42

+0

私はここで何かsimiliarをやっていますhttp://stackoverflow.com/questions/10812316/ contact-bubble-edittext – toobsco42

+0

ここで私はそれをうまく説明しました。あなたは私の[回答]を見ることができます(http://krishnalalstha.wordpress.com/2012/06/07/making-gosmsproevernote-like-edittext/) –

答えて

0

描画可能領域をgetDrawable()で返す前に設定する必要があります。

d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight()); 
+0

私はこれを試しましたが、それでもxml定義された形状のドロウアブルでは機能しません。スパンは目に見えません。 – toobsco42

+0

clickablespanは次のように設定する必要があります。 http://stackoverflow.com/questions/8641343/android-clickablespan-not-calling-onclick – toobsco42

関連する問題