Here is my code to put an ImageSpan in an EditText.
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState
this worked for me
int width;
int height;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_matn_activity3);
Display display = getWindowManager().getDefaultDisplay();
width = display.getWidth(); // deprecated
height = display.getHeight(); // deprecated
SpannableString ss = new SpannableString("ABC");
Drawable d = getResources().getDrawable(R.drawable.ic_launcher);
double ratio= (double)((double)(d.getIntrinsicWidth())/(double)(d.getIntrinsicHeight()));
//this shows the original ratio of image
if(d.getIntrinsicWidth()<width){
d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight());
Log.v("small","small");
}else{
Log.v("big","big");
d.setBounds(0, 0,(int)(width*.95),(int)(d.getIntrinsicHeight()/ratio*.95));
//i dont know why but if you put 1 instead of .95 again you will see 2 images
//this is exactly the magic width you have said
}
}
it may have little problems because my project is big and different i cant put the exact code .but it generally works