Respostas:
Esta é a melhor ferramenta que você pode usar para todas as visualizações e é muito GRATUITA graças ao @ Jérôme Van Der Linden .
O Android Holo Colors Generator permite que você crie facilmente componentes do Android, como o EditText
spinner, com suas próprias cores para o seu aplicativo Android. Ele gerará todos os nove ativos de patch necessários, além de estilos e desenhos XML associados, que você poderá copiar diretamente no seu projeto.
ATUALIZAÇÃO 1
Este domínio parece expirado, mas o projeto é um código aberto que você pode encontrar aqui
tente
esta imagem colocada no fundo de EditText
android:background="@drawable/textfield_activated"
ATUALIZAÇÃO 2
Para a API 21 ou superior, você pode usar android:backgroundTint
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Underline color change"
android:backgroundTint="@android:color/holo_red_light" />
Atualização 3
agora temos suporte traseiroAppCompatEditText
Nota: Precisamos usar app: backgroundTint em vez de android: backgroundTint
<android.support.v7.widget.AppCompatEditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Underline color change"
app:backgroundTint="@color/blue_gray_light" />
Não gosto de respostas anteriores. A melhor solução é usar:
<android.support.v7.widget.AppCompatEditText
app:backgroundTint="@color/blue_gray_light" />
android:backgroundTint
para EditText
funciona apenas no API21 + . Por causa disso, temos que usar a biblioteca de suporte e AppCompatEditText
.
Nota: temos que usar em app:backgroundTint
vez deandroid:backgroundTint
Versão AndroidX
<androidx.appcompat.widget.AppCompatEditText
app:backgroundTint="@color/blue_gray_light" />
Você também pode alterar rapidamente a cor do sublinhado do EditText pintando o fundo do EditText da seguinte maneira:
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Something or Other"
android:backgroundTint="@android:color/holo_green_light" />
para API abaixo de 21, você pode usar o atributo theme em EditText
colocar código abaixo no arquivo de estilo
<style name="MyEditTextTheme">
<item name="colorControlNormal">#FFFFFF</item>
<item name="colorControlActivated">#FFFFFF</item>
<item name="colorControlHighlight">#FFFFFF</item>
</style>
use esse estilo EditText
como
<EditText
android:id="@+id/etPassword"
android:layout_width="match_parent"
android:layout_height="@dimen/user_input_field_height"
android:layout_marginTop="40dp"
android:hint="@string/password_hint"
android:theme="@style/MyEditTextTheme"
android:singleLine="true" />
Programaticamente, você pode tentar:
editText.getBackground().mutate().setColorFilter(getResources().getColor(android.R.color.holo_red_light), PorterDuff.Mode.SRC_ATOP);
Eu acho que a melhor maneira é por tema:
<style name="MyEditTextTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="colorControlNormal">@color/black</item>
<item name="colorControlActivated">@color/action_blue</item>
<item name="colorControlHighlight">@color/action_blue</item>
</style>
<style name="AddressBookStyle" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:textSize">13sp</item>
<item name="android:theme">@style/MyEditTextTheme</item>
</style>
<android.support.v7.widget.AppCompatEditText
style="@style/AddressBookStyle"/>
Para alterar a cor do sublinhado do Edittext:
Se você deseja que o aplicativo inteiro compartilhe esse estilo, faça o seguinte.
(1) vá para o arquivo styles.xml. Seu AppTheme que herda o pai de Theme.AppCompat.Light.DarkActionBar (no meu caso) será o pai base de todos os arquivos de estilo em seu aplicativo. Mude o nome dele para “AppBaseTheme '. Crie outro estilo logo abaixo dele, que tenha o nome de AppTheme e herda do AppBaseTheme que você acabou de editar. Será parecido com o seguinte:
<!-- Base application theme. -->
<style name="AppBaseTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="windowActionBar">false</item>
<!--see http://www.google.com/design/spec/style/color.html#color-color-palette-->
<item name="colorPrimary">@color/material_brown_500</item>
<item name="colorPrimaryDark">@color/material_brown_700</item>
<item name="colorAccent">@color/flamingo</item>
<style name="AppTheme" parent="AppBaseTheme">
<!-- Customize your theme here. -->
</style>
Em seguida, altere o "colorAccent" para a cor que você deseja que a cor da linha EditText seja.
(2) Se você tiver outras pastas de valores com style.xml, esta etapa é muito importante. Porque esse arquivo será herdado do arquivo xml pai anterior. Por exemplo, eu tenho valores-19 / styles.xml. Isto é especificamente para Kitkat e acima. Altere seu pai para AppBaseTheme e certifique-se de se livrar de "colorAccent" para que ele não substitua a cor do pai. Além disso, você precisa manter os itens específicos da versão 19. Em seguida, ela ficará assim.
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="AppBaseTheme">
<item name="android:windowTranslucentStatus">true</item>
</style>
</resources>
É bem simples (obrigatório: API mínima 21) ...
Mantenha a codificação ........ :)
A cor da linha é definida pela EditText
propriedade de plano de fundo da. Para alterá-lo, você deve alterar o android:background
arquivo de layout.
Devo observar que esse estilo é alcançado usando um drawable de 9 patches. Se você olhar no SDK, poderá ver que o fundo da EditText
imagem é esta:
Para alterá-lo, você pode abri-lo em um programa de manipulação de imagens e colorir na cor desejada. Salve-o como bg_edit_text.9.png
e, em seguida, coloque-o na sua pasta de desenho. Agora você pode aplicá-lo como pano de fundo para o seguinte EditText
:
android:background="@drawable/bg_edit_text"
Você pode alterar a cor do EditText programaticamente usando esta linha de código:edittext.setBackgroundTintList(ColorStateList.valueOf(yourcolor));
O plano de fundo dos widgets depende do nível da API .
ALTERNATIVA 1
Você pode fornecer uma imagem personalizada para o seu EditText
plano de fundo
android:background="@drawable/custom_editText"
Sua imagem deve ficar assim. Isso lhe dará o efeito desejado.
ALTERNATIVA 2
Defina esse xml como seu EditText
atributo de plano de fundo.
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" android:padding="10dp">
<solid android:color="#4C000000"/>
<corners android:bottomRightRadius="5dp"
android:bottomLeftRadius="5dp"
android:topLeftRadius="5dp"
android:topRightRadius="5dp"/>
</shape>
Isso terá a mesma aparência EditText
em todas as APIs.
Você pode alterar a cor pintando o fundo
<EditText
android:backgroundTint="@color/red"/>
drawable / bg_edittext.xml
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<solid android:color="@android:color/transparent" />
</shape>
</item>
<item
android:left="-2dp"
android:right="-2dp"
android:top="-2dp">
<shape>
<solid android:color="@android:color/transparent" />
<stroke
android:width="1dp"
android:color="@color/colorDivider" />
</shape>
</item>
</layer-list>
Defina como EditText
<android.support.v7.widget.AppCompatEditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/bg_edittext"/>
Use este método .. e modifique-o de acordo com seus nomes de exibição. Esse código funciona muito bem.
private boolean validateMobilenumber() {
if (mobilenumber.getText().toString().trim().isEmpty() || mobilenumber.getText().toString().length() < 10) {
input_layout_mobilenumber.setErrorEnabled(true);
input_layout_mobilenumber.setError(getString(R.string.err_msg_mobilenumber));
// requestFocus(mobilenumber);
return false;
} else {
input_layout_mobilenumber.setError(null);
input_layout_mobilenumber.setErrorEnabled(false);
mobilenumber.setBackground(mobilenumber.getBackground().getConstantState().newDrawable());
}
Se você deseja uma linha plana, pode fazer isso facilmente com o xml. Aqui está o exemplo xml:
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:top="-1dp"
android:left="-1dp"
android:right="-1dp"
android:bottom="1dp"
>
<shape android:shape="rectangle">
<stroke android:width="1dp" android:color="#6A9A3A"/>
</shape>
</item>
</layer-list>
Substitua a forma por um seletor se desejar fornecer largura e cor diferentes para o edittext focado.
A melhor abordagem é usar um atributo AppCompatEditText
with backgroundTint
do app
espaço para nome. ie
<android.support.v7.widget.AppCompatEditText
android:layout_width="match_parent"
app:backgroundTint="YOUR COLOR"
android:layout_height="wrap_content" />
quando o usamos android:backgroundTint
, funciona apenas na API21 ou mais, mas app:backgroundTint
funciona em todos os níveis da API que seu aplicativo faz.
<EditText
android:id="@+id/et_password_tlay"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Password"
android:textColorHint="#9e9e9e"
android:backgroundTint="#000"
android:singleLine="true"
android:drawableTint="#FF4081"
android:paddingTop="25dp"
android:textColor="#000"
android:paddingBottom="5dp"
android:inputType="textPassword"/>
<View
android:id="@+id/UnderLine"
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_below="@+id/et_password_tlay"
android:layout_centerHorizontal="true"
android:background="#03f94e" />
** é uma das coisas com vista **
Tente da seguinte maneira: ele converterá a cor da linha inferior do EditText, quando usada como uma propriedade de plano de fundo.
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:left="@dimen/spacing_neg"
android:right="@dimen/spacing_neg"
android:top="@dimen/spacing_neg">
<shape>
<solid android:color="@android:color/transparent" />
<stroke
android:width="@dimen/spacing_1"
android:color="@android:color/black" />
</shape>
</item>
</layer-list>