Мне нужно скопировать 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
, потому что мне нужно скопировать выталкиваемый вид с кликом, а не статический из ресурсов.
Редактировать: Когда я использую его в Галактике Примечание 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