0

我创建了一个 imageview 图像,但我想将其缩放为不超过 android 设备屏幕尺寸宽度的五分之一和高度的六分之一。

在这里我得到屏幕的宽度和高度:

    DisplayMetrics metrics = new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getMetrics(metrics);

    int width = metrics.widthPixels;
    int height = metrics.heightPixels;

在这里我创建了我的 imageview:

    ImageView imageView = new ImageView(this);
    imageView.setImageResource(icons[0]);

在这里我尝试缩放我的图像视图:

    imageView.getDrawable().setBounds(0, 0, width/5, height/6);

最后一部分是stickler。在输入此内容后,我没有收到任何错误,并且我的程序正常运行 - 但图像未缩放。基本上最后一行代码似乎没有效果,我不知道为什么,任何指针?

我的其余代码:

    imageView.setAdjustViewBounds(true);

    int mh = imageView.getDrawable().getIntrinsicHeight();
    int mw = imageView.getDrawable().getIntrinsicWidth();

    imageView.setX(width/2 - Math.round(width/5));
    imageView.setY(height/2 - Math.round(height/6) - mActionBarSize);

    relativeLayout.addView(imageView);
    setContentView(relativeLayout);
4

2 回答 2

1

做这个 :

imageView.getLayoutParams().height = (int) Math.round(height/6);
imageView.getLayoutParams().width = (int) Math.round(width/5);
imageView.requestLayout();  // If you're setting the height/width after the layout has already been 'laid out'

请参阅此链接以了解有关 requestLayout() 的更多信息:

当某些事情发生变化而导致该视图的布局无效时调用它。这将安排视图树的布局传递。

但通常视图会自动调用它,你不必关心它......(所以对我来说,我用它来强制视图做我想做的事)

于 2014-04-28T09:41:32.220 回答
0

用这个

 ImageView imgView = (ImageView) findViewById(R.id.pageImage);
    imgView.getLayoutParams().height = 100;
    imgView.getLayoutParams().width = 100;
于 2014-04-28T09:17:58.317 回答