2010-07-04 74 views

回答

91

发现以下的,似乎做的工作:

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 = getResources().getDrawable(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); 
} 
+2

'd.setBounds(0,0,d.getIntrinsicWidth(),d.getIntrinsicHeight());'是可绘制的关键不具有固有界限。 – 2015-10-27 21:17:35

+0

getDrawable函数折旧请更新您的答案 – 2017-03-17 10:23:22

+1

如果我想调整ImageSpan在可扩展的 .. 字符串中的位置?例子我想给底部的Imagpan一个10dp的余量。 – Khay 2017-05-04 07:24:14

17

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); 

SpannableString + ImageSpan将工作。

我被这个帖子的启发:https://stackoverflow.com/a/26959656/3706042

+2

我的设备运行API'22'显示'SpannableString' +'ImageSpan'很好。我使用'VectorDrawable'虽然... – Sakiboy 2017-05-19 07:50:58

+0

你确实是正确的+1!这种神奇的方法使它工作 – Corbella 2017-12-14 06:11:36