Estou usando ConstraintLayout
no meu aplicativo para fazer o layout dos aplicativos. Estou tentando criar uma tela em que um EditText
e Button
deve estar no centro e Button
deve estar abaixo de EditText
com uma margemTop apenas 16dp.
Aqui está o meu layout e a captura de tela como está agora.
activity_authenticate_content.xml
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="16dp"
android:paddingRight="16dp"
tools:context="com.icici.iciciappathon.login.AuthenticationActivity">
<android.support.design.widget.TextInputLayout
android:id="@+id/client_id_input_layout"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent">
<android.support.design.widget.TextInputEditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/login_client_id"
android:inputType="textEmailAddress" />
</android.support.design.widget.TextInputLayout>
<android.support.v7.widget.AppCompatButton
android:id="@+id/authenticate"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:text="@string/login_auth"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="@id/client_id_input_layout"
app:layout_constraintRight_toRightOf="@id/client_id_input_layout"
app:layout_constraintTop_toTopOf="@id/client_id_input_layout" />
</android.support.constraint.ConstraintLayout>
<android.support.constraint.Guideline
? Precisamos usar sempre que usamosConstraintLayout
?layout_constraintGuide_percent
?Guideline
é apenas um item invisível no qual você pode ancorar suas visualizações.layout_constraintGuide_percent
é a porcentagem no pai. Aqui 0,5 é 50% de alturaTextInputEditText
e umButton
. Eu quero colocá-los no centro da tela. Mas até agora não é pastebin.com/iXYtuXHg, aqui está a captura de tela dropbox.com/s/k7997q2buvw76cp/q.png?dl=0LinearLayout
e centralizá-lo.Existe uma maneira mais simples. Se você definir restrições de layout da seguinte maneira e seu EditText tiver tamanho fixo, ele será centralizado no layout da restrição:
O par esquerdo / direito centraliza a vista horizontalmente e o par superior / inferior centraliza-a na vertical. Isso ocorre porque quando você define as restrições inferior esquerda, direita ou superior, maiores que a vista, a vista fica centralizada entre as duas restrições, ou seja, o viés é definido em 50%. Você também pode mover a visualização para cima / baixo ou direita / esquerda, definindo o viés. Brinque um pouco e você verá como isso afeta a posição das visualizações.
fonte
app:layout_constraintCenter_in="parent"
seria muito melhor. Mas como sempre, o Google não forneceu.A solução com diretriz funciona apenas para este caso específico com uma única linha EditText. Para fazê-lo funcionar para o EditText com várias linhas, você deve usar a cadeia "compactada".
Veja como fica:
Você pode ler mais sobre o uso de cadeias nas seguintes postagens:
fonte
Você pode centralizar uma vista como uma porcentagem do tamanho da tela.
Este exemplo usa 50% de largura e altura:
Isso foi feito usando o ConstraintLayout versão 1.1.3. Não se esqueça de adicioná-lo às suas dependências no gradle e aumente a versão se houver uma nova versão disponível:
fonte
adicione essas tags na sua visualização
e você pode clicar com o botão direito do mouse no modo de design e escolher o centro.
fonte
você pode usar o layout_constraintCircle para a vista central dentro do ConstraintLayout.
com o comando restrição ao pai e raio zero, você pode fazer com que sua visualização seja o centro do pai.
fonte