Вы получаете ошибку, потому что ориентация не установлена.Однако это только одна проблема, которая возникает в вашем коде.Это одна из областей ConstraintLayout , которую я нахожу немного мутной.Вот как я понимаю, чтобы построить руководство программно.См. Комментарии в коде для объяснения.
MainActivity.java
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ConstraintLayout constraintLayout = findViewById(R.id.layout);
// Create our guideline and add it to the layout.
Guideline guideline = getNewGuideline(this, ConstraintLayout.LayoutParams.VERTICAL);
constraintLayout.addView(guideline);
// Once the view is added to the layout, we can set its position.
guideline.setGuidelinePercent(0.25f);
ConstraintSet set = new ConstraintSet();
// The layout has a ConstraintSet already, so we have to get a clone of it to manipulate.
set.clone(constraintLayout);
// Now we can make the connections. All of our views and their ids are available in the
// ConstraintSet.
TextView textView = findViewById(R.id.textView);
set.connect(textView.getId(), ConstraintSet.START, guideline.getId(), ConstraintSet.END);
set.applyTo(constraintLayout);
}
private Guideline getNewGuideline(Context context, int orientation) {
Guideline guideline = new Guideline(context);
guideline.setId(Guideline.generateViewId());
ConstraintLayout.LayoutParams lp =
new ConstraintLayout.LayoutParams(ConstraintLayout.LayoutParams.WRAP_CONTENT,
ConstraintLayout.LayoutParams.WRAP_CONTENT);
lp.orientation = orientation;
guideline.setLayoutParams(lp);
return guideline;
}
}