2012-02-18 7 views

答えて

14

好きなだけSpannableImageSpanを追加できます。リンクしているコードのコンセプトに従ってください。おそらくSpannableStringBuilderも使用したいと思うでしょう。

Drawable happySmiley = mContext.getResources().getDrawable(R.drawable.happy); 
happySmiley .setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight()); 
Drawable sadSmiley = mContext.getResources().getDrawable(R.drawable.sad); 
sadSmiley .setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight()); 

SpannableStringBuilder builder = new SpannableStringBuilder(); 
builder.append("Some text [happy_smiley_anchor]"); 
builder.setSpan(new ImageSpan(happySmiley), builder.length()-"[happy_smiley_anchor]".length(), builder.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 
builder.append(". Some more text [sad_smiley_anchor]"); 
builder.setSpan(new ImageSpan(sadSmiley), builder.length()-"[sad_smiley_anchor]".length(), builder.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 

edittext.setText(builder); 

もちろん、あなたが好きなアンカーテキスト/文字を使用することができます - ImageSpanが挿入されたときにそれが置き換えられます。それは空の文字列でも動作するかもしれませんが、私はそれを試しませんでした。

+0

大変ありがとうございます... –

+0

この例では、開始から終了までのテキストをimagespanオブジェクトに置き換えています...カーソルがどこにあるかをイメージパネルに入れる方法はありますか? –

+1

@ ShailAdi:「ImageSpan」を開始位置と終了位置が同じ(テキストキャレットの位置)に設定しようとしましたか?また、最初にプレースホルダ文字を挿入する必要があるかもしれません。他のすべてが失敗した場合は、ここで新しい質問を開始してください。 :) –

1

Spannableに好きなだけ多くの番号を追加することができます。リンクしているコードのコンセプトに従ってください。おそらくSpannableStringBuilderも使用したいと思うでしょう。

 
SpannableStringBuilder ssb = new SpannableStringBuilder("Some Text"); 
Bitmap image1 = BitmapFactory.decodeResource(getResources(), R.drawable.yourimage1); 
Bitmap image2 = BitmapFactory.decodeResource(getResources(), R.drawable.yourimage1); ssb.setSpan(new ImageSpan(image1), 0, 1, Spannable.SPAN_INCLUSIVE_INCLUSIVE); 
ssb.setSpan(new ImageSpan(image2), 2,3, Spannable.SPAN_INCLUSIVE_INCLUSIVE); 
deleteButton.setText(ssb, BufferType.SPANNABLE); 

私は上記のコードを試しても問題なく動作します。 1つのテキストビューに2つのイメージスパンを追加しました。同様に、textviewにイメージスパンを追加できます。

関連する問題