Eu preciso de ajuda ConstraintSet
. Meu objetivo é alterar as restrições de visualização no código, mas não consigo descobrir como fazer isso direito.
Eu tenho 4 se TextView
um ImageView
. Eu preciso definir ImageView
restrições para um dos TextView
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);
Se a primeira resposta estiver certa, preciso definir as restrições de ImageView
para
app:layout_constraintRight_toRightOf="@+id/check_answer1"
app:layout_constraintTop_toTopOf="@+id/check_answer1"
Se a 2ª resposta estiver certa, preciso definir restrições de ImageView
para
app:layout_constraintRight_toRightOf="@+id/check_answer2"
app:layout_constraintTop_toTopOf="@+id/check_answer2"
E assim por diante.
android
android-layout
android-view
android-constraintlayout
Grande treinador
fonte
fonte
Respostas:
Para definir as restrições de visualização da imagem para:
usar:
Para definir as restrições de visualização da imagem para:
usar:
fonte
.clone(constraintLayout)
que é essa variável e de onde a obtenho?ConstraintLayout constraintLayout = findViewById(R.id.parent_layout);
Suponha que queremos alterar as restrições durante o tempo de execução, fazendo com que o botão1 fique alinhado com o botão2 quando clicado:
Então, tendo este layout:
Podemos fazer o seguinte:
fonte
layoutParams
eval
? Isso é mesmo Java?ConstraintLayout.LayoutParams params = (ConstraintLayout.LayoutParams) button1.getLayoutParams();
button1.requestLayout()
que irá inspecionar a instânciaLayoutParams
daquilo que alteramos.requestLayout()
call porsetLayoutParams()
e então funciona. Simplesmente mudarlayoutParams
e solicitar o layout não parece funcionar.No Kotlin, você pode simplesmente estender a
ConstraintSet
classe e adicionar alguns métodos para aproveitar as vantagens do dsl no Kotlin e produzir um código mais legível. Como issoE usar assim
fonte
Eu sei que minha resposta está muito atrasada, mas tenho certeza que ajudaria muito outras pessoas que passam por aqui. Este artigo não é meu, mas fiz algumas alterações, sendo assim, você deve se esforçar para verificar o artigo completo aqui
Conjuntos de restrições
A chave para trabalhar com conjuntos de restrições no código Java é a classe ConstraintSet. Esta classe contém uma variedade de métodos que permitem tarefas como criar, configurar e aplicar restrições a uma instância de ConstraintLayout. Além disso, as restrições atuais para uma instância de ConstraintLayout podem ser copiadas para um objeto ConstraintSet e usadas para aplicar as mesmas restrições a outros layouts (com ou sem modificações).
Uma instância de ConstraintSet é criada como qualquer outro objeto Java:
Após a criação de um conjunto de restrições, os métodos podem ser chamados na instância para realizar uma ampla gama de tarefas. O código a seguir configura um conjunto de restrições em que o lado esquerdo de uma visualização de botão é conectado ao lado direito de uma visualização de EditText com uma margem de 70 dp:
Aplicando restrições a um layout Depois que o conjunto de restrições é configurado, ele deve ser aplicado a uma instância de ConstraintLayout antes de ter efeito. Um conjunto de restrições é aplicado por meio de uma chamada ao método applyTo (), passando por uma referência ao objeto de layout ao qual as configurações devem ser aplicadas:
Há muito mais coisas que você pode fazer com a
ConstraintSet
API, definir o viés horizontal e vertical, centralizar horizontalmente e verticalmente, manipular cadeias e muito mais.Leitura realmente boa.
Novamente, esta é apenas uma adaptação.
fonte
Além da resposta de azizbekian , deixe-me apontar duas coisas:
params.startToEnd = button2.id
params.startToEnd = ConstraintLayout.LayoutParams.UNSET
fonte