Java 使用OnClickListener更改LayoutParams?
我正在学习如何使用LayoutParams。关于设置布局参数,我有点不明白。这是我的密码:Java 使用OnClickListener更改LayoutParams?,java,android,imageview,Java,Android,Imageview,我正在学习如何使用LayoutParams。关于设置布局参数,我有点不明白。这是我的密码: layout = findViewById(R.id.relative_layout); img = findViewById(R.id.img_view); RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) img.getLayoutParams(); img.setOnClickListen
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中传输它时,我需要再次设置布局参数?这背后的逻辑是什么?您正在设置参数后修改它们。这意味着用于优化求解约束的当前解决方案不再有效,需要重新计算约束。通过更改这一约束,整个布局可能会更改
通过在布局上再次设置布局参数,可以解析并重新计算每个视图的新位置,包括新添加的约束。只要不调用重新计算方法,就会使用旧的布局。请澄清一下,您的意思是Inner OnCreate()布局参数已经设置,当我在OnClickListener中更改它时,需要再次设置它?@Rkleer Yes。您有布局-
xml
-文件,已经定义了布局和布局参数。您只需获取对这些参数当前状态的引用,修改不会更改实际布局,只需获取参数的本地副本。通过再次在RelativeLayout
上设置它们,可以应用这些更改和布局更改。