java - RelativeLayout LayoutParams 缩放不正确
问题描述
我在 XML 文件中有一个相对布局,其中包含图像的宽度和高度的 ImageView 元素。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/tankHeight"
android:layout_width="210dp"
android:layout_height="350dp"
android:layout_centerInParent="true"
app:srcCompat="@drawable/tank_progress" />
然后,当在其类中调用该方法时,我尝试动态更改图像的高度(仅高度,而不是宽度),如下所示...
public void updateTank() {
ImageView myTank = (ImageView)findViewById(R.id.tankHeight);
RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams)
myTank.getLayoutParams();
params.height = 350 - 35;
myTank.setLayoutParams(params);
}
但是,当调用此方法时,当我只想将高度降低 35 个像素时,图像似乎会在高度和宽度上按指定的量进行缩放。我的理解是,这可能是由于使用了相对布局,但我不确定如何解决这个问题,以便我只能以编程方式更改高度。通过阅读this和this,我认为该方法设置正确,所以不确定为什么它的显示与预期不同?
解决方案
更改视图高度和/或宽度需要重新绘制,尝试调用requestLayout()
. 希望能帮助到你。
public void updateTank() {
ImageView myTank = (ImageView)findViewById(R.id.tankHeight);
RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams)
myTank.getLayoutParams();
params.height = 350 - 35;
myTank.setLayoutParams(params);
myTank.requestLayout();
}
推荐阅读
- java - 如何使用普通 For 循环打印动态数组
- c# - 如何在 .NET Framework 3.5 上使用 System.Threading.Tasks 类
- indexing - 如何在狮身人面像中索引特殊字符
- curl - 如何将 Jenkins 证书凭证绑定用于 curl 请求?
- drupal-8 - 如何增强 Drupal 8 Views 批量操作确认页面?
- java - VS Code 调试无法从 import 语句中解析类,而使用命令行可以正常工作
- python - 在字符串中找到某个字符串
- laravel - 用于自引用表的 web.php 中的 laravel 路由
- reactjs - 如何在 react-native 中访问导航对象
- c# - 如何更改 ac# 控制台应用程序的入口点?