在Android中,如何使用按钮在运行时调整ImageView的大小

4

我正在使用ImageView容器显示图片。当用户输入特定值并点击更新时,需要调整图像大小以适应显示。

调整大小仅用于显示,原始资源保持不变,不进行编辑、保存等操作。

XML布局

<ImageView 
android:background="@drawable/picture01" 
android:id="@+id/picture01holder" 
android:layout_below="@+id/TextView01" 
android:layout_height="wrap_content" 
android:layout_width="wrap_content" 
</ImageView>

main.java

final ImageView pic01 = (ImageView)findViewById(R.id.picture01);

现在我该怎么做才能动态地为这个pic01分配我想要的大小。只需要函数,我可以自己在按钮内实现它。我相信我必须使用像pic01.setLayoutParams这样的东西,但我不知道如何使用它。

基本上我想在.java文件中覆盖layout_height="wrap_content"和layout_width="wrap_content"。

3个回答

5

通过使用 LayoutParams 来改变 ImageView 的大小。

    final ImageView pic01 = (ImageView)findViewById(R.id.picture01);
    LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(50, 50);
    pic01.setLayoutParams(layoutParams);

5

首先,你需要根据个人偏好将图像的比例类型设置为CENTER_INSIDE 或 CENTER_CROP。你应该在onCreate()方法中进行此操作。

myImageView.setScaleType(ImageView.ScaleType.CENTER_INSIDE);

之后,您只需调整布局中的图像视图大小。这将取决于您使用的布局类型。LinearLayout的示例如下:

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(100,200);
myImageView.setLayoutParams(params);

或者您可以设置组件的最小大小:

myImageView.setMinimumWidth(200);
myImageView.setMinimumHeight(200);

在这两种情况下,确保大小可以在布局内实现。如果您有多个具有较小权重的组件,则图像视图可能无法占用所需空间。


1
这是一个很好的答案,但是这个答案以及所有其他目前发布的答案的一个问题是它建议实例化一个 new LayoutParams。这样做的缺点是,许多 ViewGroup 实现它们自己的 LayoutParams 子类,并且需要知道特定的 ViewGroup 类才能知道要实例化哪个 LayoutParams。一个简单的方法是只需使用 getLayoutParams() 检索现有的 LayoutParams 实例,修改其宽度和高度,然后使用 setLayoutParams 分配回去。这将避免潜在的 ClassCastException - Avi Cherry

0
RelativeLayout.LayoutParams myParams = new RelativeLayout.LayoutParams(yourWidthHere, yourHeightHere);

pic01.setLayoutParams(myParams)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接