首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用OnClickListener更改LayoutParams?

用OnClickListener更改LayoutParams?
EN

Stack Overflow用户
提问于 2021-02-03 19:14:11
回答 1查看 31关注 0票数 1

我正在学习如何使用LayoutParams。关于设置布局参数,我有一些不明白的地方。下面是我的代码:

代码语言:javascript
复制
 layout = findViewById(R.id.relative_layout);
    img = findViewById(R.id.img_view);
    RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) img.getLayoutParams();

    img.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            params.addRule(RelativeLayout.CENTER_IN_PARENT);

            img.setLayoutParams(params); //Setting LayoutParams?

        }
    });

如果我把这段代码直接放到OnCreate()方法中,它就能正常工作,但是为什么当我在OnClickListener内部传递它时,我需要再次设置布局参数呢?这背后的逻辑是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-03 19:27:53

您将在设置参数后对其进行修改。这意味着当前用于优化求解约束的解决方案不再有效,需要重新计算它们。通过更改这一个约束,您的整个布局可能会发生变化。

通过再次设置布局上的布局参数,它将解析并重新计算每个视图的新位置,包括新添加的约束。只要不调用重新计算方法,就会使用旧的布局。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66026359

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档