Como personalizar o EditText AppCompat no Android?
O EditText é um dos elementos importantes da IU que leva os dados como entrada do usuário. O EditText usual no Android, que parece decente o suficiente, tem apenas o texto de dica e a linha que faz o usuário clicar nessa linha e inserir os dados. Consulte o artigo widget EditText no Android usando Java com exemplos , que explica os fundamentos sobre o AppCompat EditText normal. Neste artigo, foi discutido como personalizar o AppCompat EditText. Dê uma olhada na imagem a seguir para diferenciar entre o AppCompat EditText não personalizado usual e o AppCompat EditText personalizado.
Etapas para personalizar o texto de edição AppCompat no Android
Etapa 1: criar um projeto de atividade vazio
- Crie uma atividade vazia Projeto do Android Studio.
- Consulte o Android | Como criar / iniciar um novo projeto no Android Studio?
Etapa 2: Trabalhar com o arquivo activity_main.xml
- Apenas dois widgets EditText são implementados no arquivo de layout principal. Um é o nome de usuário e o outro é o campo Senha.
- Invoque o código a seguir para implementar a mesma IU.
<?xml version="1.0" encoding="utf-8"?>
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
tools:ignore="HardcodedText">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<!--E-mail field-->
<EditText
android:id="@+id/emailField1"
android:layout_width="match_parent"
android:layout_height="60dp"
android:layout_marginStart="16dp"
android:layout_marginTop="32dp"
android:layout_marginEnd="16dp"
android:hint="Email" />
<!--Password field-->
<EditText
android:id="@+id/passwordField1"
android:layout_width="match_parent"
android:layout_height="60dp"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:layout_marginEnd="16dp"
android:hint="Password" />
</LinearLayout>
</ScrollView>
IU de saída:
Etapa 3: importar ícones vetoriais
- Importe ícones vetoriais para a pasta drawable.
- Para importar os ícones de vetor , clique com o botão direito na pasta drawable> Novo> Ativo de vetor.
- Certifique-se de fazer cópias do ícone único na pasta drawable. Um ícone quando o texto de edição está fora de foco e quando o texto de edição está em foco.
- Defina a cor do ícone como cinza quando o texto de edição estiver fora de foco e defina a cor do ícone como colorPrimary quando o EditText estiver em foco.
- Consulte a imagem a seguir para obter as etapas discutidas acima.
- E a combinação de ambos os ícones cria um layout de seletor XML custom_mail_icon como segue.
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!--the icon turns to green when the edit text is in focus-->
<item android:drawable="@drawable/ic_mail_focused" android:state_focused="true" />
<!--the icon turns to grey when the edit text is out of focus-->
<item android:drawable="@drawable/ic_mail" android:state_focused="false" />
</selector>
- O mesmo vale para o ícone do campo de senha.
Primeiro, o EditText com o layout de cantos cortados é discutido
Etapa 1: Crie um plano de fundo de layout do Seletor para o EditText
- Este é o layout que fornece a caixa de canto recortado para o campo EditText.
- Para implementar o mesmo, crie um arquivo custom_edit_text_cut.xml na pasta drawable e invoque o código a seguir.
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!--the outline box turns to green when the edit text is in focus-->
<item android:state_enabled="true" android:state_focused="true">
<shape android:shape="rectangle">
<solid android:color="@android:color/white" />
<stroke android:width="2dp" android:color="@color/colorPrimary" />
</shape>
</item>
<!--the outline box turns to grey when the edit text is out of focus-->
<item android:state_enabled="true">
<shape android:shape="rectangle">
<solid android:color="@android:color/white" />
<stroke android:width="2dp" android:color="@android:color/darker_gray" />
</shape>
</item>
</selector>
Etapa 2: Trabalhar com o arquivo activity_main.xml
- No arquivo activity_main.xml, chame o plano de fundo para EditText como custom_edit_text_cut.xml.
<?xml version="1.0" encoding="utf-8"?>
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
tools:ignore="HardcodedText">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<!--invoke the background as the
custom_edit_text_cut-->
<EditText
android:id="@+id/emailField1"
android:layout_width="match_parent"
android:layout_height="60dp"
android:layout_marginStart="16dp"
android:layout_marginTop="32dp"
android:layout_marginEnd="16dp"
android:background="@drawable/custom_edit_text_cut"
android:drawableStart="@drawable/custom_mail_icon"
android:drawablePadding="12dp"
android:hint="Email"
android:paddingStart="12dp"
android:paddingEnd="12dp" />
<!--same background for the password field
as the custom_edit_text_cut-->
<EditText
android:id="@+id/passwordField1"
android:layout_width="match_parent"
android:layout_height="60dp"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:layout_marginEnd="16dp"
android:background="@drawable/custom_edit_text_cut"
android:drawableStart="@drawable/custom_vpn_icon"
android:drawablePadding="12dp"
android:hint="Password"
android:paddingStart="12dp"
android:paddingEnd="12dp" />
</LinearLayout>
</ScrollView>
Saída: Executar no emulador
Em segundo lugar, o EditText com o layout arredondado é discutido
Etapa 1: Crie um plano de fundo de layout do Seletor para o EditText
- Este é o layout que fornece a caixa de canto recortado para o campo EditText.
- Para implementar o mesmo, crie um arquivo custom_edit_text_rounded.xml na pasta drawable e chame o código a seguir.
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!--The outline turns to colorPrimary when the EditText is in focus-->
<item android:state_enabled="true" android:state_focused="true">
<shape android:shape="rectangle">
<solid android:color="@android:color/white" />
<corners android:radius="12dp" />
<stroke android:width="2dp" android:color="@color/colorPrimary" />
</shape>
</item>
<!--The outline turns to grey when the EditText is out of focus-->
<item android:state_enabled="true">
<shape android:shape="rectangle">
<solid android:color="@android:color/white" />
<corners android:radius="12dp" />
<stroke android:width="2dp" android:color="@android:color/darker_gray" />
</shape>
</item>
</selector>
Etapa 2: Trabalhar com o arquivo activity_main.xml
- No arquivo activity_main.xml, chame o plano de fundo para EditText como custom_edit_text_rounded.xml.
<?xml version="1.0" encoding="utf-8"?>
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
tools:ignore="HardcodedText">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<!--invoke the background as the
custom_edit_text_rounded-->
<EditText
android:id="@+id/emailField1"
android:layout_width="match_parent"
android:layout_height="60dp"
android:layout_marginStart="16dp"
android:layout_marginTop="32dp"
android:layout_marginEnd="16dp"
android:background="@drawable/custom_edit_text_rounded"
android:drawableStart="@drawable/custom_mail_icon"
android:drawablePadding="12dp"
android:hint="Email"
android:paddingStart="12dp"
android:paddingEnd="12dp" />
<!--same background for the password field
as the custom_edit_text_rounded-->
<EditText
android:id="@+id/passwordField1"
android:layout_width="match_parent"
android:layout_height="60dp"
android:layout_marginStart="16dp"
android:layout_marginTop="32dp"
android:layout_marginEnd="16dp"
android:background="@drawable/custom_edit_text_rounded"
android:drawableStart="@drawable/custom_vpn_icon"
android:drawablePadding="12dp"
android:hint="Password"
android:paddingStart="12dp"
android:paddingEnd="12dp" />
</LinearLayout>
</ScrollView>
Saída: Executar no emulador
As postagens do blog Acervo Lima te ajudaram? Nos ajude a manter o blog no ar!
Faça uma doação para manter o blog funcionando.
70% das doações são no valor de R$ 5,00...
Diógenes Lima da Silva