如何以编程方式创建ConstraintLayouts和指南?我已经尝试了下面的代码来创建一个简单的布局,使用Guideline将视图锚定到屏幕中间,但它呈现屏幕左侧的红色'v'视图(请参阅screenshot)在代码中创建Android ConstraintLayout和指南
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);
}
}
我也在使用beta3。这很奇怪。安装时,我确实在https://code.google.com/p/android/issues/detail?id=227030上发生了错误,但即使出现错误,安装也会成功。我检查了实际的约束 - 布局-1.0.0-beta3.aar文件的md5,它具有我认为正确的md5(0b98641b30b62b65adbeba29d90d1107),所以它似乎确实是beta3。 – snoob
我只是让我的同事安装约束布局(成功没有错误),并尝试这一点,他得到了我所做的同样的破坏行为。使用beta3。 – snoob
我使用beta1获得了正确的行为。所以看起来这是beta2中的回归。我已经在我的机器和我的同事的机器上证实了这一点。使用android 5在nexus 6上进行测试,并在模拟器上使用android 5,6和7进行测试(所有行为都相同)。 – snoob