Java 是否有方法在ConstraintLayout中复制组件的约束参数?

Java 是否有方法在ConstraintLayout中复制组件的约束参数?,java,android,Java,Android,在我的ConstraintLayout中有一个视图,它位于XML中。然后我想在单击按钮时将此视图更改为另一个视图。我有脚本来做它,它工作正常,但是新的视图出现在屏幕顶部,我需要它处于与前一个相同的位置。我读过谷歌安卓系统的文档,但我发现没有任何东西对我有帮助。唯一的方法是使用ConstraintSet.connect()?您可以通过重新使用原始视图的ConstraintLayout.LayoutParams对象来执行此操作: button.setOnClickListener(v -> {

在我的
ConstraintLayout
中有一个
视图
,它位于XML中。然后我想在单击按钮时将此视图更改为另一个视图。我有脚本来做它,它工作正常,但是新的
视图出现在屏幕顶部,我需要它处于与前一个相同的位置。我读过谷歌安卓系统的文档,但我发现没有任何东西对我有帮助。唯一的方法是使用
ConstraintSet.connect()

您可以通过重新使用原始视图的
ConstraintLayout.LayoutParams
对象来执行此操作:

button.setOnClickListener(v -> {
    ConstraintLayout.LayoutParams params = 
            (ConstraintLayout.LayoutParams) viewToRemove.getLayoutParams();

    parent.removeView(viewToRemove);
    parent.addView(viewToAdd, params);
});
请注意,这将提供与旧视图相同的宽度高度,因此,如果需要将其设置为不同,则可能需要明确设置:

ConstraintLayout.LayoutParams params = 
        (ConstraintLayout.LayoutParams) toRemove.getLayoutParams();

params.width = ViewGroup.LayoutParams.WRAP_CONTENT;
params.height = ViewGroup.LayoutParams.WRAP_CONTENT;

无论如何,我需要它的大小相同。是的,它就像我想要的那样工作。