nos*_*a13 4 css java android imageview
我在xml声明了ImageView:
...
<ImageView
android:id="@+id/image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:maxHeight="60dip"
android:maxWidth="60dip"
android:scaleType="centerCrop" />
...
Run Code Online (Sandbox Code Playgroud)
我想以编程方式获取maxWidth和maxHeight参数值:
...
ImageView imageView = (ImageView) findViewById(R.id.image);
int maxWidth = ?
int maxHeight = ?
...
Run Code Online (Sandbox Code Playgroud)
我该怎么做?
小智 9
ImageView的相关成员变量是mMaxWidth和mMaxHeight,都被声明为私有.也没有可用的getter方法,它为您提供了一个选项:
使用反射来检查字段.
以下是如何执行此操作的示例:
int maxWidth = -1;
int maxHeight = -1;
ImageView iv = (ImageView) findViewById(R.id.imageview);
try {
Field maxWidthField = ImageView.class.getDeclaredField("mMaxWidth");
Field maxHeightField = ImageView.class.getDeclaredField("mMaxHeight");
maxWidthField.setAccessible(true);
maxHeightField.setAccessible(true);
maxWidth = (Integer) maxWidthField.get(iv);
maxHeight = (Integer) maxHeightField.get(iv);
} catch (SecurityException e) {
e.printStackTrace();
} catch (NoSuchFieldException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
其他答案提getWidth()和getHeight(),但它是不一样的.如果在上面的检查之后运行以下代码段,您将看到差异(由于设置值或源图像大小,目前尺寸和最大尺寸不相同):
Log.d("TEST", "width="+iv.getWidth()+" || height="+iv.getHeight());
Log.d("TEST", "maxWidth="+maxWidth+" || maxHeight="+maxHeight);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4809 次 |
| 最近记录: |