如何使用代码动态的获取和设置ImageView的宽度和高度?

本文介绍了一种获取Android中ImageView尺寸的方法,通过Bitmap对象而非直接使用ImageView的getWidth和getHeight方法。此外,还介绍了如何动态调整ImageView的尺寸。
摘要由CSDN通过智能技术生成

国内某金融企业的一道面试题:如何在代码中获得一个ImageVIew的高度和宽度?

相信很大一部分人,会直接想到用imageview.getWidth() 和 imageview.getHeight() 来获得,其实不然。

我们可以自己写个程序来跑一下,当我们放置一张图片在imageView中,并且设置了它的高度和宽度,我们不妨在日志控制台输出看一下,

Log.i("MainActivity", "宽度:"+String.valueOf(imageView.getWidth()));
Log.i("MainActivity", "高度:"+String.valueOf(imageView.getHeight()));

输出结果如下:

 

是不是很恼火呀,结果就是这样。

那么究竟该如何获取图片的高度和宽度呢? 其实,我们可以通过构建一个BItMap对象出来,这个BItMap就是从我们的那种图片资源转换而来,bitmap对象中的getWidth() 和getHeight()可以获得位图的大小,代码例子如下:

	ImageView imageView = (ImageView)findViewById(R.id.imageView);
	Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.newscar);
	Log.i("MainActivity", "宽度:"+String.valueOf(bitmap.getWidth()));
	Log.i("MainActivity", "高度:"+String.valueOf(bitmap.getHeight()));

这个时候我们再来看一下日志控制台的输出结果:


Ok,第一个问题我们搞定了(注意:这是原图片的大小,不是我们布局文件中设置的大小)。


接下来我们看一下如何动态设置图片的高度和宽度,这问题比较简单,我们直接使用LayoutParams的对象来进行设置 

代码如下:

	ImageView imageView = (ImageView)findViewById(R.id.imageView);
	imageView.setImageResource(R.drawable.newscar);
	LayoutParams params = imageView.getLayoutParams();
	params.height=200;
	params.width =100;
	imageView.setLayoutParams(params);


### 回答1: 示例代码如下: ```java Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.image); ImageView imageView = findViewById(R.id.image_view); // 设置 ImageView宽度高度 int width = bitmap.getWidth(); int height = bitmap.getHeight(); LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(width, height); imageView.setLayoutParams(params); // 显示 Bitmap 对象 imageView.setImageBitmap(bitmap); ``` 其中,`R.drawable.image` 是图片资源的 ID,`R.id.image_view` 是 ImageView 的 ID。 首先使用 `BitmapFactory.decodeResource()` 方法将图片资源解码成 Bitmap 对象,然后创建一个 ImageView 对象,接着使用 `bitmap.getWidth()` 和 `bitmap.getHeight()` 方法获取图片的宽度高度,最后创建一个 LinearLayout.LayoutParams 对象并设置宽度高度,最后调用 `imageView.setImageBitmap()` 方法显示 Bitmap 对象。 ### 回答2: 在将Bitmap对象显示在ImageView上时,我们可以使用LayoutParams参数来设置ImageView宽度高度。LayoutParams是ViewGroup的一个内部类,用于设置View的布局参数。 首先,我们需要获取ImageView对象,并创建一个LayoutParams对象来设置其布局参数。我们可以使用ImageView的getLayoutParams()方法来获取已经设置的布局参数,然后使用LayoutParams的width和height属性来设置宽度高度。 接着,我们可以使用BitmapFactory类的decodeResource()方法来解码Bitmap对象并将其加载到ImageView中。这个方法可以从资源文件中加载Bitmap对象。 最后,我们可以使用ImageView的setLayoutParams()方法将LayoutParams对象设置ImageView,从而实现设置View的宽度高度。在这个方法中,我们传入LayoutParams对象作为参数。 下面是一个示例代码: ``` java // 获取ImageView对象 ImageView imageView = findViewById(R.id.imageView); // 创建LayoutParams对象 ViewGroup.LayoutParams layoutParams = imageView.getLayoutParams(); // 设置宽度高度 layoutParams.width = 500; layoutParams.height = 300; // 加载Bitmap对象到ImageView中 Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.bitmap_image); imageView.setImageBitmap(bitmap); // 将LayoutParams设置ImageView imageView.setLayoutParams(layoutParams); ``` 这样,我们就可以通过设置LayoutParams参数来实现将Bitmap对象显示在ImageView上并设置宽度高度。 ### 回答3: 当我们想要将一个 Bitmap 对象显示在 ImageView 上时,可以使用LayoutParams 参数来动态设置 View 的宽度高度。LayoutParams 是一个用于设置 View 的布局参数的类。 在示范中,我们可以先获取 ImageView 的 LayoutParams 对象,然后设置宽度高度为我们想要的数值。比如,要将 ImageView宽度设置为300像素,高度设置为200像素,可以按照以下步骤进行操作: 1. 获取 ImageView 的 LayoutParams 对象: ```java ViewGroup.LayoutParams layoutParams = imageView.getLayoutParams(); ``` 2. 设置宽度高度: ```java layoutParams.width = 300; layoutParams.height = 200; ``` 3. 将设置后的 LayoutParams 对象应用到 ImageView: ```java imageView.setLayoutParams(layoutParams); ``` 这样,我们就成功将 Bitmap 对象显示在 ImageView 上,并通过 LayoutParams 参数设置了 View 的宽度高度。 需要注意的是,LayoutParams 的具体使用方式可能因为框架而略有不同,上述示范可能需要根据具体情况稍作修改。同时,设置宽度高度数值可以是像素值,也可以是其他单位,根据实际需求进行调整。 总之,通过使用 LayoutParams 参数来设置 View 的宽度高度,我们能够灵活地控制视图的显示效果,使其符合我们的需求。
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值