如何以編程方式創建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