【问题标题】:Why isn't setLayoutParams changing the size of my ImageView?为什么 setLayoutParams 不改变我的 ImageView 的大小?
【发布时间】:2017-08-03 22:12:29
【问题描述】:

我过去曾这样做过,但我很沮丧,因为这种方法没有像我预期的那样工作。我有一张想要调整为特定尺寸的图片,我正在使用以下代码:

snellen.post(new Runnable() {
        @Override
        public void run() {
            ConstraintLayout.LayoutParams params = (ConstraintLayout.LayoutParams) snellen.getLayoutParams();
            params.width = (int)(converted*WIDTH_RATIO);
            params.height = (int)(converted*HEIGHT_RATIO);

            snellen.setLayoutParams(params);

            System.out.println("########################################################################### SNELLEN CHART WIDTH: : " + snellen.getWidth());
            System.out.println("########################################################################### SNELLEN CHART HEIGHT: : " + snellen.getHeight());
        }
    });

我检查了(converted*WIDTH_RATIO)(converted*HEIGHT_RATIO) 是什么,它们在100 的某个地方。我已经把它放在一个处理程序中,所以我可以得到正确的getLayoutParams(),因为我过去遇到过这个问题。

问题是当我打印出宽度和高度时,它们不是我在params.widthparams.height 中设置的值。我在这里做错了什么?

【问题讨论】:

  • 看起来应该可以了,不是吗?查看this answer 了解另一种解决方法。
  • 由于snellen 的父级似乎是ConstraintLayout,是否有可能是约束过于具体以至于不允许您控制视图的大小?
  • @BenP。你是对的。我必须将我的图像设置为仅限制在屏幕的一侧,而不是使用我创建的指南限制在所有侧面。然后它能够​​调整图像的大小。哇,我从没想过这是个问题。随时发表您的评论作为答案

标签: android imageview layoutparams


【解决方案1】:

由于您将snellenLayoutParams 转换为ConstraintLayout.LayoutParams,因此您的视图很可能是ConstraintLayout 的子视图。

如果是这种情况,问题可能在于您的视图的尺寸是由其约束集定义的,因此更改 params.widthparams.height 将无效。

检查视图的约束并确保它们不决定视图的尺寸。

【讨论】:

    【解决方案2】:

    尝试使用snellen.requestLayout()希望对你有所帮助

    【讨论】:

    • 在哪里?在我的 .post 之上还是在我对 getLayoutParams 的调用之上?
    • 在 snellen.setLayoutParams(params);但是我检查了您尝试分配的值未分配给 Imageview
    • 是的,只是尝试添加它,但它似乎没有做任何事情。还是谢谢
    • imageview 的父布局是什么/
    • 一个约束布局
    猜你喜欢
    • 1970-01-01
    • 2018-04-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-31
    相关资源
    最近更新 更多