我试图将图像内联添加到EditText。我通过ImageSpan这样做。这些图像可能是BitmapDrawables或VectorDrawables,并存储为Drawable对象。
以下是我正在使用的代码:
smilie.setBounds(0, 0, editor.getLineHeight(), editor.getLineHeight());
spanObject = new ImageSpan(smilie, similieObject.imageUrl);
此方法存在两个问题。第一个是图像的“观察区域”看起来改变但是图像的实际比例没有改变(例如图像的一角只是可见的)。第二个问题是,只要我插入另一个ImageSpan - 无论位置如何,第一个ImageSpan都会恢复为固有的高度和宽度:
我尝试过上面的方法,首先将drawable转换为ScaleDrawable并将drawable转换为BitmapDrawable,但这会使图像“消失”(或者至少变得非常小)。
(这里是参考位图转换代码):
smilie.setBounds(0, 0, editor.getLineHeight(),editor.getLineHeight());
Bitmap bitmap;
bitmap = Bitmap.createBitmap(smilie.getIntrinsicWidth(), smilie.getIntrinsicHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
smilie.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());
smilie.draw(canvas);
bitmap = Bitmap.createScaledBitmap(bitmap, editor.getLineHeight(), editor.getLineHeight(), true);
smilie = new BitmapDrawable(bitmap);
spanObject = new ImageSpan(smilie);