在膨胀视图后无法以编程方式设置约束

时间:2018-01-20 22:45:54

标签: java android

我正在给布局充气,我试图在充气后设置视图对象的约束。这是代码:

LayoutInflater linflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
ConstraintSet set = new ConstraintSet();
ConstraintLayout runSessionLayout = findViewById(R.id.runSessionLayout);

View buttonsLayout = linflater.inflate(R.layout.session_buttons_layout, runSessionLayout, false);
currentTime = buttonsLayout.findViewById(R.id.currentTime);
btnQuickLog = buttonsLayout.findViewById(R.id.btnSessionQuickLog);
btnNormalLog = buttonsLayout.findViewById(R.id.btnSessionNormalLog);
btnLiveLog = buttonsLayout.findViewById(R.id.btnSessionLiveLog);

runSessionLayout.addView(buttonsLayout);
set.clone(runSessionLayout);
set.connect(btnQuickLog.getId(), ConstraintSet.RIGHT, runSessionLayout.getId(), ConstraintSet.RIGHT, 0);
set.applyTo(runSessionLayout);

对象正确充气但由于某些原因未添加约束。

我尝试了完全相同的代码来设置" runSessionLayout"中的按钮的约束。为此设定了约束条件。看起来这对于膨胀的" buttonsLayout"的对象不起作用。而且我无法理解为什么......

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

如果其他人有这个问题:我通过启动膨胀视图的约束布局并使用约束集克隆它来解决它。

代码更改:

cnsButtonsLayout = buttonsLayout.findViewById(R.id.sessionsButtonLayout);
set.clone(cnsButtonsLayout);