我创建了一个约束布局,将其布局参数设置为 (Match_Parent, Wrap_Content),然后以编程方式将其添加到现有的线性布局中 - 无一例外。 我运行了应用程序,但在屏幕上看不到添加的约束布局。
有人知道为什么吗?
代码如下:
private void addGroups(){
int i = 0;
while(true){
JSONObject group = spm.getObject("grp" + i);
ConstraintLayout thumbnail = new ConstraintLayout(this);
thumbnail.setId(View.generateViewId());
try {
thumbnail.setLayoutParams(new ViewGroup.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT));
thumbnail.setClickable(true);
ConstraintSet set = new ConstraintSet();
set.clone(thumbnail);
ImageView groupImage = new ImageView(this);
groupImage.setId(View.generateViewId());
thumbnail.addView(groupImage, 0);
groupImage.setLayoutParams(new ConstraintLayout.LayoutParams(50, 50));
set.connect(groupImage.getId(), ConstraintSet.TOP, thumbnail.getId(), ConstraintSet.TOP, 8);
set.connect(groupImage.getId(), ConstraintSet.RIGHT, thumbnail.getId(), ConstraintSet.RIGHT, 8);
set.connect(groupImage.getId(), ConstraintSet.BOTTOM, thumbnail.getId(), ConstraintSet.BOTTOM, 8);
set.connect(groupImage.getId(), ConstraintSet.BOTTOM, thumbnail.getId(), ConstraintSet.BOTTOM, 0);
set.setHorizontalBias(groupImage.getId(), 0);
groupImage.setImageResource(android.R.drawable.alert_light_frame);
Bitmap img;
try{
img = spm.StringToBitMap(group.getString("image"));
}catch(Exception e){
img = null;
}
if(img != null) groupImage.setImageBitmap(img);
TextView groupName = new TextView(this);
groupName.setId(View.generateViewId());
thumbnail.addView(groupName, 1);
groupName.setLayoutParams(new ConstraintLayout.LayoutParams(0, 42));
set.connect(groupName.getId(), ConstraintSet.TOP, thumbnail.getId(), ConstraintSet.TOP, 8);
set.connect(groupName.getId(), ConstraintSet.RIGHT, groupImage.getId(), ConstraintSet.LEFT, 8);
set.connect(groupName.getId(), ConstraintSet.BOTTOM, thumbnail.getId(), ConstraintSet.BOTTOM, 8);
set.connect(groupName.getId(), ConstraintSet.BOTTOM, thumbnail.getId(), ConstraintSet.BOTTOM, 8);
groupName.setText(group.getString("name"));
set.applyTo(thumbnail);
System.out.println("Successfully created thumbnail " + i);
}catch(Exception e){
System.out.println("Error1 " + e + " ================================================");
i++;
continue;
}
TNCon.addView(thumbnail, i);
System.out.println(thumbnail.toString());
i++;
}
}
(spm 是一个管理 SharedPreferances 的类,getObject() 返回一个 JSON,以 JSON 形式的字符串保存在 SP 中 - 所有与 JSON 相关的事情都可以工作。程序基于 JSON 创建约束布局元素我保存了。)