我正在尝试将图像内联添加到 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);