Com um Preview 1 do Android Studio 2.2 Google lançou um novo layout em sua biblioteca de suporte: ConstraintLayout
. Com o ConstraintLayout, é mais fácil usar uma ferramenta Design no Android Studio, mas não encontrei uma maneira de usar tamanhos relativos (porcentagens ou 'pesos', como no LinearLayout). Existe uma maneira de definir as restrições com base em porcentagens? Por exemplo, fazer uma Visualização ocupar 40% da tela, criar uma margem de 20% entre as visualizações, definir a largura de uma Visualização para 50% da largura de outra Visualização?
android
android-support-library
android-constraintlayout
Yury Fedorov
fonte
fonte
version 1.1
ConstraintLayout. Consulte "Dimensão percentual" em developer.android.com/reference/android/support/constraint/… ou algumas das respostas mais recentes.Respostas:
No momento, você pode fazer isso de duas maneiras.
Uma é criar diretrizes (clique com o botão direito do mouse na área de design e clique em adicionar orientação vertical / horizontal). Você pode clicar no "cabeçalho" da diretriz para alterar o posicionamento para ser baseado em porcentagem. Por fim, você pode restringir as visualizações às diretrizes.
Outra maneira é posicionar uma vista usando viés (porcentagem) e depois ancorar outras vistas nessa vista.
Dito isso, estamos pensando em como oferecer dimensões baseadas em porcentagem. Não posso fazer nenhuma promessa, mas é algo que gostaríamos de acrescentar.
fonte
app:layout_constraintGuide_percentage
Pode ser útil ter uma referência rápida aqui.
Colocação de visualizações
Use uma diretriz com
app:layout_constraintGuide_percent
como esta:E então você pode usar esta diretriz como pontos de ancoragem para outras visualizações.
ou
Use o viés com
app:layout_constraintHorizontal_bias
e / ouapp:layout_constraintVertical_bias
para modificar o local da visualização quando o espaço disponível permitirTamanho das visualizações
Outro valor baseado em porcentagem é a altura e / ou largura dos elementos, com
app:layout_constraintHeight_percent
e / ouapp:layout_constraintWidth_percent
:fonte
0dp
é usado no ConstraintLayout para indicar o dimensionamento dinâmico. Consulte developer.android.com/reference/android/support/constraint/…1dp
, não0dp
.. é o que eu estou falando0dp
já está reservado, então1dp
parece sensato.No "ConstraintLayout1.1.0-beta1", você pode usar o percentual para definir larguras e alturas.
Isso definirá a largura como 40% da largura da tela. Uma combinação disso e das diretrizes em porcentagem permite criar o layout baseado em porcentagem desejado.
fonte
version 1.1
ConstraintLayout. O adicional_default="percent"
não é mais necessário na versão estável! Consulte "Dimensão percentual" em developer.android.com/reference/android/support/constraint/…sp
unidades, como o tamanho do texto pode ser proporcional ao tamanho da visualização (que, por si só, é definido proporcionalmente ao tamanho total do layout, ou seja, em 'porcentagem') ?Com a nova versão do ConstraintLayout v1.1, agora você pode fazer o seguinte:
Isso restringirá o botão a 20% da altura e 65% da largura da visualização principal.
fonte
sp
unidades, como o tamanho do texto pode ser proporcional ao tamanho da visualização (que, por si só, é definido proporcionalmente ao tamanho total do layout, ou seja, em 'porcentagem') ?Como usar as Diretrizes
A resposta aceita é um pouco clara sobre como usar diretrizes e qual é o "cabeçalho".
Passos
Primeiro adicione uma Diretriz.
Selecione a guia ou mova-a um pouco para tornar as restrições visíveis.
Em seguida, clique no círculo redondo (o "cabeçalho") até que se torne um percentual. Em seguida, você pode arrastar essa porcentagem para 50% ou o que quiser.
Depois disso, você pode restringir sua exibição à Diretriz para torná-la uma porcentagem do pai (usando
match_constraint
na exibição).fonte
A Diretriz é inestimável - e o aplicativo: layout_constraintGuide_percent é um ótimo amigo ... No entanto, às vezes, queremos porcentagens sem diretrizes. Agora é possível usar pesos :
Aqui está um exemplo mais completo que usa uma diretriz com pesos adicionais :
fonte
Com o ConstraintLayout v1.1.2, a dimensão deve ser definida como
0dp
e, em seguida, definir os atributoslayout_constraintWidth_percent
oulayout_constraintHeight_percent
para um valor entre 0 e 1, como:(Você não precisa definir
app:layout_constraintWidth_default="percent"
ouapp:layout_constraintHeight_default="percent"
com o ConstraintLayout 1.1.2 e seguintes versões)fonte
O Constraint Layout 1.0, que cria uma visualização, ocupa uma porcentagem da tela necessária para a criação de duas diretrizes. No Layout de restrições 1.1, ficou mais simples, permitindo restringir facilmente qualquer visualização a uma porcentagem de largura ou altura.
Isso não é fantástico? Todas as visualizações suportam os atributos layout_constraintWidth_percent e layout_constraintHeight_percent. Isso fará com que a restrição seja corrigida em uma porcentagem do espaço disponível. Portanto, a expansão de um botão ou de um TextView para preencher uma porcentagem da tela pode ser feita com algumas linhas de XML.
Por exemplo, se você deseja definir a largura do botão para 70% da tela, é possível fazer o seguinte:
Observe que você precisará colocar a dimensão como porcentagem para 0dp, conforme especificamos android: layout_width a 0dp acima.
Da mesma forma, se você deseja definir a altura do botão para 20% da tela, é possível fazer o seguinte:
Vejo! especificamos android: layout_height para 0dp dessa vez, pois queremos que o botão use a altura como porcentagem.
fonte
Experimente este código. Você pode alterar as porcentagens de altura e largura com app: layout_constraintHeight_percent e app: layout_constraintWidth_percent.
Gradle:
fonte
você pode usá-
app:layout_constraintVertical_weight
lo da mesma forma quelayout_weight
emlinearlayout
NOTA:
app:layout_constraintVertical_weight
(app:layout_constraintHorizontal_weight
) funcionará comandroid:layout_width="0dp"
(android:layout_height="0dp"
fonte
Para alguém que possa ser útil, você pode usar
layout_constraintDimensionRatio
qualquer visualização filho dentro deConstraintLayout
e podemos definir a proporção Altura ou Largura da outra dimensão (pelo menos um deve ser 0dp de largura ou altura) exemploneste caso, a proporção é 16: 9,
app:layout_constraintDimensionRatio="16:9"
você pode encontrar mais informações AQUIfonte
Eu sei que isso não é diretamente o que o OP estava pedindo originalmente, mas isso me ajudou muito nessa situação quando eu tive uma pergunta semelhante. . Adicione isso ao seu onCreate na atividade de pergunta. (Altera para 80%)
fonte
Simplesmente, basta substituir, na sua etiqueta de diretrizes
com
onde 0,7 significa 70%.
Além disso, se você tentar arrastar as diretrizes agora, o valor arrastado será exibido em% de idade.
fonte
Usando Diretrizes, você pode alterar o posicionamento para ser baseado em porcentagem
Você também pode usar este caminho
fonte