Урок 183. ConstraintSet. Программная настройка ConstraintLayout

Обсуждение уроков
Ответить
Аватара пользователя
damager82
Администратор
Сообщения: 1383
Зарегистрирован: 07 янв 2012, 11:32
Контактная информация:

Урок 183. ConstraintSet. Программная настройка ConstraintLayout

Сообщение damager82 » 17 июл 2017, 22:36

С помощью ConstraintSet вы можете программно создавать привязки, цепочки, барьеры и настраивать их.


Click here to read this article!
Последний раз редактировалось damager82 30 июл 2017, 01:18, всего редактировалось 8 раз.
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение

Karambol
Сообщения: 1
Зарегистрирован: 24 окт 2017, 09:39

Re: Урок 183. ConstraintSet. Программная настройка Constrain

Сообщение Karambol » 24 окт 2017, 09:49

А у меня почему-то ведёт себя маленько не так, как задумано:
http://g.recordit.co/OTTdl23aHn.gif

Код: Выделить всё

import android.os.Bundle;
import android.support.constraint.ConstraintLayout;
import android.support.constraint.ConstraintSet;
import android.support.transition.TransitionManager;
import android.support.v7.app.AppCompatActivity;

import butterknife.BindDimen;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;

public class MainActivity extends AppCompatActivity {

    @BindView(R.id.container)
    ConstraintLayout constraintLayout;

    @BindDimen(R.dimen.some_margin)
    int someMargin;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ButterKnife.bind(this);
    }

    @OnClick(R.id.button)
    void onButtonClick() {
        ConstraintSet set = new ConstraintSet();

        // copy constraints settings from current ConstraintLayout to set
        set.clone(constraintLayout);

        // change constraints settings
        changeConstraints(set);

        // enable animation
        TransitionManager.beginDelayedTransition(constraintLayout);

        // apply constraints settings from set to current ConstraintLayout
        set.applyTo(constraintLayout);
    }

    private void changeConstraints(ConstraintSet set) {
        set.clear(R.id.textView3, ConstraintSet.LEFT);
        set.clear(R.id.textView3, ConstraintSet.TOP);

        set.connect(R.id.textView3, ConstraintSet.LEFT, R.id.textView2, ConstraintSet.LEFT);
        set.connect(R.id.textView3, ConstraintSet.BOTTOM, R.id.textView2, ConstraintSet.TOP, someMargin);
    }

}

Ответить