Как создать вертикальную или горизонтальную направляющую программно - PullRequest
0 голосов
/ 07 мая 2019

Мне нужно программно создать руководство и применить к нему представление.

Я использовал следующий код, но он вылетал.

  Guideline guideline = new Guideline(this);
  guideline.setId(guideline.generateViewId());
  constraintLayout.addView(guideline);


//Connecting view with the guideline


        ConstraintSet set = new ConstraintSet();
        set.connect(textView.getId(), ConstraintSet.RIGHT,   guideline.getId(), ConstraintSet.LEFT);
        set.applyTo(constraintLayout);

но я получаю следующее сообщение об ошибке.

java.lang.AssertionError: LEFT

Я также не могу понять, какприменить ориентацию к ориентиру, который я создал

1 Ответ

2 голосов
/ 07 мая 2019

Вы получаете ошибку, потому что ориентация не установлена.Однако это только одна проблема, которая возникает в вашем коде.Это одна из областей 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;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...