java—通过代码向约束布局添加视图

x3naxklr  于 2021-07-11  发布在  Java
关注(0)|答案(1)|浏览(334)

所以我的屏幕有一个图像视图,我用下面的代码用动画拖拽屏幕:

float bottomOfScreen = context.getResources().getDisplayMetrics()
    .heightPixels - (myImageView.getHeight() * 2);

    myImageView.animate()
    .translationY(bottomOfScreen)
    .setDuration(durationOfFalling);

所以基本上,我有一个图像,它被拖出屏幕,现在我的图像已经消失了,但我需要它回到原来的位置,它是在我把它拖下来之前(在屏幕的顶部),所以我可以再拖下来,每当我想。你有什么办法,我可以使图像再次出现在屏幕的顶部,这样我就可以重复使用它?
我还尝试通过constraintlayout添加它,然后再通过constraintlayout.addview(myimageview)这样添加它(可能做得不对):

ConstraintLayout ly = findViewById(R.id.ly);
    noteiv1.setLayoutParams(new ConstraintLayout.LayoutParams(ConstraintLayout.LayoutParams.WRAP_CONTENT, ConstraintLayout.LayoutParams.WRAP_CONTENT));
    noteiv1.setId(View.generateViewId());
    ly.addView(noteiv1);
    ConstraintSet set = new ConstraintSet();
    set.clone(ly);
    set.connect(noteiv1.getId(), ConstraintSet.LEFT, ly.getId(), ConstraintSet.LEFT);
    set.connect(noteiv1.getId(), ConstraintSet.RIGHT, ly.getId(), ConstraintSet.RIGHT);
    set.connect(noteiv1.getId(), ConstraintSet.TOP, ly.getId(), ConstraintSet.TOP);
    set.connect(noteiv1.getId(), ConstraintSet.BOTTOM, ly.getId(), ConstraintSet.BOTTOM);
    set.applyTo(ly);
  • noteiv1是我需要重用的图像视图

我很高兴能得到一些帮助:)

6jjcrrmo

6jjcrrmo1#

这已经被问到和回答了。
这里有一个答案。
我认为你应该在添加imageview后克隆布局。

ConstraintLayout parentLayout = (ConstraintLayout)findViewById(R.id.mainConstraint);
ConstraintSet set = new ConstraintSet();

ImageView childView = new ImageView(this);
// set view id, else getId() returns -1
childView.setId(View.generateViewId());
layout.addView(childView, 0);

set.clone(parentLayout);
// connect start and end point of views, in this case top of child to top of parent.
set.connect(childView.getId(), ConstraintSet.TOP, parentLayout.getId(), ConstraintSet.TOP, 60);
// ... similarly add other constraints
set.applyTo(parentLayout);

相关问题