添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

当你需要在代码中动态给约束布局添加约束,而不能在xml文件中写约束的时候,你需要用到ConstraintSet这个类,谷歌给我们写的很清楚。https://developer.android.google.cn/reference/android/support/constraint/ConstraintSet.html

但是,我在动态写约束的时候遇到一个问题,上代码

        ConstraintLayout cl = findViewById(R.id.parent_layout);
        Button b1 = new Button(this);
        Button b2 = new Button(this);
        cl.addView(b1);
        cl.addView(b2);
        b1.setId(View.generateViewId());
        b2.setId(View.generateViewId());
        ConstraintSet set = new ConstraintSet();
        set.clone(cl);
        set.connect(b1.getId(), ConstraintSet.TOP, b2.getId(), ConstraintSet.BOTTOM);
        set.applyTo(cl);

我发现失效,b1并没有按照我想要的放在b2下面。由于种种努力,最后终于找到解决方法。Id的设置必须要在addView之前,如果先addView然后再设置id就会失效,不知道是不是约束布局的bug,但是相对布局就没有问题。所以解决方案就是在addView之前设置id即可。

        ConstraintLayout cl = findViewById(R.id.parent_layout);
        Button b1 = new Button(this);
        Button b2 = new Button(this);
        b1.setId(View.generateViewId());
        b2.setId(View.generateViewId());
        cl.addView(b1);
        cl.addView(b2);
        ConstraintSet set = new ConstraintSet();
        set.clone(cl);
        set.connect(b1.getId(), ConstraintSet.TOP, b2.getId(), ConstraintSet.BOTTOM);
        set.applyTo(cl);
当你需要在代码中动态给约束布局添加约束,而不能在xml文件中写约束的时候,你需要用到ConstraintSet这个类,谷歌给我们写的很清楚。https://developer.android.google.cn/reference/android/support/constraint/ConstraintSet.html      但是,我在动态写约束的时候遇到一个问题,上代码 ...
Android 约束 布局 ConstraintLayout 的基本使用 约束 布局 ConstraintLayout 面世已有很长一段时间了,但我一直没有关注这个 Android 中继五大 布局 后的新 布局 的使用。近日在网友的讨论的强烈推荐下,尝试了 ConstraintLayout 。使用之后的最大感触就是:为什么我不早点在项目中尝试 ConstraintLayout !!! 本篇文章,旨在记录ConstraintLay...
动态 设置 ConstraintLayout 约束 以前一直是在 布局 里直接 设置 ConstraintLayout 约束 ,前几天遇到了一个有点特殊的需求,需要 动态 设置 布局 ,xml 布局 使用的 ConstraintLayout ,所以就立马恶补 动态 设置 ConstraintLayout 约束 的知识,总结如下。 获取要 设置 目标控件的父 布局 。 val constraintLayout Root = getView< ConstraintLayout >(R. id .constraint_dynamics_root) val constraintLayout Root = viewBinding.layoutStepAward val constraintSet = ConstraintSet() constraintSet.clone( constraintLayout Root) constraintSet.connect(viewBinding.bubble. id , ConstraintSe.
这种情况可能是由于移动端浏览器对`fixed`和`absolute`定位元素的渲染机制不同所导致的。在移动端浏览器中,`fixed`定位元素的位置是相对于视口而不是文档进行定位的,而`absolute`定位元素则是相对于最近的非`static`定位祖先元素进行定位的。因此,如果一个`fixed`定位元素的祖先元素包含了一个 设置 了`overflow`属性的容器,则在移动端浏览器中可能会导致`fixed`定位元素的位置不再相对于视口进行定位,而是相对于该容器进行定位。 为了 解决 这个 问题 ,你可以尝试将`fixed`定位元素的祖先元素中最近的非`static`定位元素 设置 为`fixed`定位,以确保该元素的位置始终相对于视口进行定位。或者,你可以考虑使用JavaScript来 动态 计算`fixed`定位元素的位置,以确保其位置始终正确。