setBounds的Drawables不能将它们的大小保持在ImageSpan中

时间:2017-12-05 03:50:16

标签: android android-edittext android-drawable imagespan

我试图将图像内联添加到EditText。我通过ImageSpan这样做。这些图像可能是BitmapDrawables或VectorDrawables,并存储为Drawable对象。

以下是我正在使用的代码:

smilie.setBounds(0, 0, editor.getLineHeight(), editor.getLineHeight());
spanObject = new ImageSpan(smilie, similieObject.imageUrl);

此方法存在两个问题。第一个是图像的“观察区域”看起来改变但是图像的实际比例没有改变(例如图像的一角只是可见的)。第二个问题是,只要我插入另一个ImageSpan - 无论位置如何,第一个ImageSpan都会恢复为固有的高度和宽度:

Example

我尝试过上面的方法,首先将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);

0 个答案:

没有答案