Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/210.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在代码中创建Android约束和指南_Android_Android Constraintlayout - Fatal编程技术网

在代码中创建Android约束和指南

在代码中创建Android约束和指南,android,android-constraintlayout,Android,Android Constraintlayout,如何以编程方式创建约束和准则?我尝试了下面的代码来创建一个简单的布局,它使用一个指南将视图锚定到屏幕的中间,但它会在屏幕左侧呈现红色的“v”视图(请参阅) 您使用的是哪个版本的ConstraintLayout?在beta 3中尝试您的示例,我得到了正确的行为: 编辑——我不正确,beta 4已经解决了这个问题 此外,对于使用ConstraintLayout以编程方式创建布局参数,在将其设置为视图之前,应调用ConstraintLayout.LayoutParams上的validate()函数。

如何以编程方式创建约束和准则?我尝试了下面的代码来创建一个简单的布局,它使用一个指南将视图锚定到屏幕的中间,但它会在屏幕左侧呈现红色的“v”视图(请参阅)


您使用的是哪个版本的
ConstraintLayout
?在beta 3中尝试您的示例,我得到了正确的行为:

编辑——我不正确,beta 4已经解决了这个问题


此外,对于使用ConstraintLayout以编程方式创建布局参数,在将其设置为视图之前,应调用ConstraintLayout.LayoutParams上的validate()函数。

这是一个现已在beta4中修复的错误。请注意,在代码中设置ConstraintLayout.LayoutParams后,必须调用lp.validate()。更多详细信息请访问。

我也在使用beta3。这很奇怪。我在安装时确实收到了错误,但是安装成功,即使您收到了错误。我检查了实际constraint-layout-1.0.0-beta3.aar文件的md5,我认为它有正确的md5(0b98641b30b62b65adbeba29d90d1107),所以它似乎真的是beta3。我刚刚让我的同事安装constraint-layout(成功无误),然后尝试这个,他得到了与我相同的破坏行为。使用beta3。我使用beta1获得正确的行为。看来这是beta2的回归。我已经在我和同事的机器上确认了这一点。在Nexus6和安卓5上测试,在emulator和安卓5、6和7上测试(所有的行为都是一样的)。还要注意,我提交的bug有一个比这个稍微高级的示例,但在beta1-3()中不起作用。
public class MainActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        ConstraintLayout cl = new ConstraintLayout(this);
        cl.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));
        setContentView(cl);

        Guideline gl = new Guideline(this);
        ConstraintLayout.LayoutParams gllp = new ConstraintLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, 500);
        gllp.guidePercent = 0.5f;
        gllp.orientation = LinearLayout.VERTICAL;
        gl.setLayoutParams(gllp);
        gl.setId(View.generateViewId());
        cl.addView(gl);

        View v = new View(this);
        v.setId(View.generateViewId());
        v.setBackgroundColor(0xFFFF0000);
        ConstraintLayout.LayoutParams lp = new ConstraintLayout.LayoutParams(50, 500);
        lp.rightToRight = gl.getId();
        v.setLayoutParams(lp);
        cl.addView(v);
    }
}