我正在学习如何使用LayoutParams。关于设置布局参数,我有一些不明白的地方。下面是我的代码:
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内部传递它时,我需要再次设置布局参数呢?这背后的逻辑是什么?
发布于 2021-02-03 19:27:53
您将在设置参数后对其进行修改。这意味着当前用于优化求解约束的解决方案不再有效,需要重新计算它们。通过更改这一个约束,您的整个布局可能会发生变化。
通过再次设置布局上的布局参数,它将解析并重新计算每个视图的新位置,包括新添加的约束。只要不调用重新计算方法,就会使用旧的布局。
https://stackoverflow.com/questions/66026359
复制相似问题