Potrzebuję pomocy ConstraintSet
. Moim celem jest zmiana ograniczeń widoku w kodzie, ale nie wiem, jak to zrobić dobrze.
Mam 4 TextView
si jeden ImageView
. Muszę ustawić ImageView
ograniczenia na jeden z TextView
plików s.
check_answer4 = (TextView) findViewById(R.id.check_answer4);
check_answer1 = (TextView) findViewById(R.id.check_answer1);
check_answer2 = (TextView) findViewById(R.id.check_answer2);
check_answer3 = (TextView) findViewById(R.id.check_answer3);
correct_answer_icon = (ImageView) findViewById(R.id.correct_answer_icon);
Jeśli pierwsza odpowiedź jest poprawna, muszę ustawić ograniczenia ImageView
na
app:layout_constraintRight_toRightOf="@+id/check_answer1"
app:layout_constraintTop_toTopOf="@+id/check_answer1"
Jeśli druga odpowiedź jest poprawna, muszę ustawić ograniczenia ImageView
na
app:layout_constraintRight_toRightOf="@+id/check_answer2"
app:layout_constraintTop_toTopOf="@+id/check_answer2"
I tak dalej.
android
android-layout
android-view
android-constraintlayout
Duży trener
źródło
źródło
Odpowiedzi:
Aby ustawić ograniczenia widoku obrazu na:
posługiwać się:
Aby ustawić ograniczenia widoku obrazu na:
posługiwać się:
źródło
.clone(constraintLayout)
co to za zmienna i skąd ją biorę?ConstraintLayout constraintLayout = findViewById(R.id.parent_layout);
Załóżmy, że chcemy zmienić ograniczenia w czasie wykonywania, dzięki czemu przycisk1 zostanie wyrównany z przyciskiem2 po kliknięciu:
Następnie mając ten układ:
Możemy wykonać następujące czynności:
źródło
layoutParams
ival
? Czy to w ogóle Java?ConstraintLayout.LayoutParams params = (ConstraintLayout.LayoutParams) button1.getLayoutParams();
button1.requestLayout()
następnie wykonujemy, która następnie sprawdza instancjęLayoutParams
, którą zmutowaliśmy.requestLayout()
połączenia nasetLayoutParams()
i wtedy działa. Samo zmutowanielayoutParams
i zażądanie układu wydaje się nie działać.W Kotlinie możesz po prostu rozszerzyć
ConstraintSet
klasę i dodać kilka metod, aby skorzystać z dsl w Kotlinie i stworzyć bardziej czytelny kod. Lubię toI używaj tego w ten sposób
źródło
Wiem, że moja odpowiedź jest bardzo późna, ale jestem pewien, że bardzo pomogłaby innym, którzy tu wpadają. Ten artykuł nie jest mój, ale wprowadziłem kilka zmian, więc powinieneś postarać się sprawdzić cały artykuł tutaj
Zestawy wiązań
Kluczem do pracy z zestawami ograniczeń w kodzie Java jest klasa ConstraintSet. Ta klasa zawiera szereg metod, które umożliwiają wykonywanie takich zadań, jak tworzenie, konfigurowanie i stosowanie ograniczeń do instancji ConstraintLayout. Ponadto bieżące ograniczenia dla instancji ConstraintLayout można skopiować do obiektu ConstraintSet i użyć do zastosowania tych samych ograniczeń do innych układów (z modyfikacjami lub bez).
Instancja ConstraintSet jest tworzona tak jak każdy inny obiekt Java:
Po utworzeniu zestawu ograniczeń można wywołać metody w instancji w celu wykonania szerokiego zakresu zadań. Poniższy kod konfiguruje zestaw ograniczeń, w których lewa strona widoku przycisku jest połączona z prawą stroną widoku EditText z marginesem 70 dp:
Stosowanie ograniczeń do układu Po skonfigurowaniu zestawu ograniczeń należy go zastosować do instancji ConstraintLayout, zanim zacznie obowiązywać. Zestaw ograniczeń jest stosowany przez wywołanie metody applyTo (), przechodząc przez odwołanie do obiektu układu, do którego mają zostać zastosowane ustawienia:
Jest znacznie więcej rzeczy, które możesz zrobić z
ConstraintSet
API, ustawiania odchylenia poziomego i pionowego, środkowania w poziomie i w pionie, manipulowania łańcuchami i wiele więcej.Naprawdę fajna lektura.
Znowu to tylko adaptacja.
źródło
Oprócz odpowiedzi Azizbekiana chciałbym zwrócić uwagę na dwie rzeczy:
params.startToEnd = button2.id
params.startToEnd = ConstraintLayout.LayoutParams.UNSET
źródło