这是我将 ImageSpan 放入 EditText 中的代码。
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
EditText et = (EditText) getActivity().findViewById(R.id.html_text);
SpannableString ss = new SpannableString("ABC");
Drawable d = getResources().getDrawable(R.drawable.ic_launcher);
d.setBounds(0,0,2256,760);
ImageSpan span = new ImageSpan(d, "haha", ImageSpan.ALIGN_BASELINE);
ss.setSpan(span, 0, 3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
et.setText(ss);
}
在玩的过程中,我发现了一些奇怪的事情。我的 AVD 是 2560x1600。当 setBounds 调用宽度小于或等于 2256 时,图片显示正确。但宽度大于2256时,图片会显示两次!不同图片的魔法值是相同的。我还尝试了不同大小的 AVD。对于 720x1080,魔术宽度是 608。这个魔术宽度是多少?如何确保我的图片不超过这个神奇宽度?
顺便说一句,这是 EditText 的布局:
<EditText
android:id="@+id/html_text"
android:layout_width="match_parent"
android:layout_height="match_parent" />
这对我有用
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
}
}
它可能有一点问题,因为我的项目很大而且不同,我无法输入确切的代码
.但它通常有效
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)