我想在TextView中旋转drawableLeft。
我尝试了这段代码:
Drawable result = rotate(degree);
setCompoundDrawables(result, null, null, null);
private Drawable rotate(int degree)
{
Bitmap iconBitmap = ((BitmapDrawable)originalDrawable).getBitmap();
Matrix matrix = new Matrix();
matrix.postRotate(degree);
Bitmap targetBitmap = Bitmap.createBitmap(iconBitmap, 0, 0, iconBitmap.getWidth(), iconBitmap.getHeight(), matrix, true);
return new BitmapDrawable(getResources(), targetBitmap);
}
Run Code Online (Sandbox Code Playgroud)
但这给我在左侧可绘制区域的空白。
实际上,即使是最简单的代码也提供了空格:
Bitmap iconBitmap = ((BitmapDrawable)originalDrawable).getBitmap();
Drawable result = new BitmapDrawable(getResources(), iconBitmap);
setCompoundDrawables(result, null, null, null);
Run Code Online (Sandbox Code Playgroud)
这个很好用:
setCompoundDrawables(originalDrawable, null, null, null);
Run Code Online (Sandbox Code Playgroud)
根据文档,如果要设置drawableLeft,则应调用setCompoundDrawablesWithIntrinsicBounds(向左int,向右int,向右int,向右int)。仅当在Drawable上调用了setBounds()时,才调用setCompoundDrawables()起作用,这可能是您originalDrawable起作用的原因。
因此,将您的代码更改为:
Drawable result = rotate(degree);
setCompoundDrawablesWithIntrinsicBounds(result, null, null, null);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3262 次 |
| 最近记录: |