带有Image示例的SpannableString

Asa*_*ahi 55 android

我正在寻找一个如何使用Image跨度构建和显示SpannableString的示例.像在线显示表情的东西.

非常感谢

Asa*_*ahi 111

找到以下内容,它似乎做了这个工作:

public class TestActivity extends Activity { 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
            TextView textView  = (TextView) findViewById(R.id.textview); 
            SpannableString ss = new SpannableString("abc"); 
            Drawable d = ContextCompat.getDrawable(this, R.drawable.icon32);
            d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight()); 
            ImageSpan span = new ImageSpan(d, ImageSpan.ALIGN_BASELINE); 
            ss.setSpan(span, 0, 3, Spannable.SPAN_INCLUSIVE_EXCLUSIVE); 
            textView.setText(ss); 
} 
Run Code Online (Sandbox Code Playgroud)

  • `d.setBounds(0,0,d.getIntrinsicWidth(),d.getIntrinsicHeight());`是没有内在边界的Drawables的关键. (3认同)

小智 19

SpannableString + ImageSpan在Android API 21和22中不起作用(我在模拟器中的Android Studio 1.2.1.1中测试过),但如果你这样做:

TextView textView  = (TextView) findViewById(R.id.textview);
textView.setTransformationMethod(null);
...
textView.setText(ss); 
Run Code Online (Sandbox Code Playgroud)

SpannableString + ImageSpan将起作用.

我受到这篇文章的启发:https://stackoverflow.com/a/26959656/3706042

  • 我的运行API`22`的设备显示`SpannableString` +`ImageSpan`很好.我正在使用`VectorDrawable'虽然...... (2认同)