2010-07-04 11 views

Respuesta

91

encontró lo siguiente y parece que hacer el trabajo:

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());' es clave para dibujables que no tienen límites intrínsecos. –

+0

getDrawable función depreciada por favor actualice su respuesta –

+1

Si quiero ajustar la posición de ImageSpan dentro de la que se puede abrir ... cadena? Ejemplo Quiero dar un margen de 10 dp desde abajo a Imagspan. – Khay

17

SpannableString + ImageSpan no funcionan en Android API 21 & 22 (I probados en Android Studio 1.2. 1.1 en el emulador), pero si usted hace esto:

TextView textView = (TextView) findViewById(R.id.textview); 
textView.setTransformationMethod(null); 
... 
textView.setText(ss); 

SpannableString + ImageSpan va a funcionar.

Me inspiré en este post: https://stackoverflow.com/a/26959656/3706042

+2

Mi dispositivo que ejecuta API '22' muestra' SpannableString' + 'ImageSpan' bien. Estoy usando 'VectorDrawable's though ... – Sakiboy

+0

¡De hecho eres correcto +1! Este método mágico lo hace funcionar – Corbella