我需要在應用程序中複製ImageView,並在用戶需要時更改其大小。我所做的是這裏:ImageView ScaleType.FIT_XY不能使用setImageDrawable
public void testClick(View view)
{
ImageView im = new ImageView(this);
im.setImageDrawable(((ImageView) view).getDrawable());
Point size = getSize();//size of the window
al.addView(im, new AbsoluteLayout.LayoutParams(view.getWidth(), view.getHeight(), size.x/2, size.y/2));
im.setScaleType(ImageView.ScaleType.FIT_XY);
im.setOnTouchListener(touchListener);
}
public void changeSize()
{
...
view.setLayoutParams(new AbsoluteLayout.LayoutParams(width + deltaX, height + deltaY, params.x, params.y));
}
它不起作用!意味着當我增加視圖的大小時,內部的圖像不會被拉伸。 但是,當我改變線im.setImageDrawable(((ImageView) view).getDrawable());
與im.setImageResource(R.drawable.my_image);
它奇怪的事情發生了! 有什麼想法?
我不想使用setImageResource
,因爲我需要複製點擊視圖的drawable,而不是來自資源的靜態視圖。
編輯:當我在Galaxy Note 6中使用它(我認爲它是Android 5)它的工作原理。但在我的Android 4.1.2設備上,它並沒有!
EDIT2:我以前
BitmapDrawable bd=(BitmapDrawable)((ImageView) view).getDrawable();
im.setImageBitmap(bd.getBitmap());
它workd!
嘗試在更改大小後調用view.invalidate()。 – DavidH
@DavidH它沒有工作 – Feri
你可以嘗試的另一件事是使用setImageBitmap()代替setImageDrawable(),因爲我相信setImageResource()已被棄用。 – DavidH