Risposte:
Questo è lo strumento migliore che puoi utilizzare per tutte le viste ed è GRATUITO grazie a @ Jérôme Van Der Linden .
Android Holo Colors Generator ti consente di creare facilmente componenti Android come EditText
o spinner con i tuoi colori per la tua applicazione Android. Genererà tutte le nove risorse di patch necessarie, oltre ai disegni e agli stili XML associati che è possibile copiare direttamente nel progetto.
AGGIORNAMENTO 1
Questo dominio sembra scaduto ma il progetto è open source che puoi trovare qui
Provalo
questa immagine ha messo sullo sfondo di EditText
android:background="@drawable/textfield_activated"
AGGIORNAMENTO 2
Per API 21 o successive, puoi usare 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" />
Aggiornamento 3
Ora abbiamo con il supporto posterioreAppCompatEditText
Nota: dobbiamo usare l' app: backgroundTint invece di 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" />
Non mi piacciono le risposte precedenti. La soluzione migliore è usare:
<android.support.v7.widget.AppCompatEditText
app:backgroundTint="@color/blue_gray_light" />
android:backgroundTint
per EditText
lavori solo su API21 + . Per questo motivo, dobbiamo usare la libreria di supporto eAppCompatEditText
.
Nota: dobbiamo usare app:backgroundTint
invece diandroid:backgroundTint
Versione AndroidX
<androidx.appcompat.widget.AppCompatEditText
app:backgroundTint="@color/blue_gray_light" />
Puoi anche cambiare rapidamente il colore di sottolineatura di EditText colorando lo sfondo di EditText in questo modo:
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Something or Other"
android:backgroundTint="@android:color/holo_green_light" />
per API inferiori a 21, è possibile utilizzare l'attributo del tema nel EditText
codice sottostante in file di stile
<style name="MyEditTextTheme">
<item name="colorControlNormal">#FFFFFF</item>
<item name="colorControlActivated">#FFFFFF</item>
<item name="colorControlHighlight">#FFFFFF</item>
</style>
usa questo stile EditText
come
<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" />
A livello di programmazione, puoi provare:
editText.getBackground().mutate().setColorFilter(getResources().getColor(android.R.color.holo_red_light), PorterDuff.Mode.SRC_ATOP);
penso che il modo migliore sia per 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"/>
Per cambiare il colore di sottolineatura di Edittext:
Se desideri che l'intera app condivida questo stile, puoi procedere nel modo seguente.
(1) vai al file styles.xml. Il tuo AppTheme che eredita il genitore di Theme.AppCompat.Light.DarkActionBar (nel mio caso) sarà il genitore di base di tutti i file di stile nella tua app. Cambia il nome in "AppBaseTheme". Crea un altro stile proprio sotto di esso che abbia il nome di AppTheme ed erediti da AppBaseTheme che hai appena modificato. Sarà simile al seguente:
<!-- 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>
Quindi cambia "colorAccent" in qualunque sia il colore che vuoi che sia il colore della tua linea EditText.
(2) Se hai altre cartelle di valori con style.xml, questo passaggio è molto importante. Perché quel file erediterà dal tuo precedente file XML padre. Ad esempio, ho valori-19 / styles.xml. Questo è specifico per Kitkat e versioni successive. Cambia il suo genitore in AppBaseTheme e assicurati di sbarazzarti di "colorAccent" in modo che non prevalga sul colore del genitore. Inoltre, è necessario mantenere gli elementi specifici della versione 19. Quindi sarà simile a questo.
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="AppBaseTheme">
<item name="android:windowTranslucentStatus">true</item>
</style>
</resources>
È piuttosto semplice (obbligatorio: API 21 minimo) ...
Mantieni codifica ........ :)
Il colore della linea è definito dalla EditText
proprietà background di. Per cambiarlo dovresti cambiare android:background
nel file di layout.
Dovrei notare che questo stile è ottenuto usando un disegnabile a 9 patch. Se guardi nell'SDK, puoi vedere che lo sfondo di EditText
questa immagine è:
Per modificarlo è possibile aprirlo in un programma di manipolazione delle immagini e colorarlo nel colore desiderato. Salvalo come bg_edit_text.9.png
e poi mettilo nella tua cartella disegnabile. Ora puoi applicarlo come sfondo per il tuo EditText
like così:
android:background="@drawable/bg_edit_text"
Puoi cambiare il colore di EditText a livello di codice semplicemente usando questa riga di codice:edittext.setBackgroundTintList(ColorStateList.valueOf(yourcolor));
Lo sfondo dei widget dipende dal livello API .
ALTERNATIVA 1
Puoi fornire un'immagine personalizzata al tuo EditText
sfondo di
android:background="@drawable/custom_editText"
La tua immagine dovrebbe assomigliare a questa. Ti darà l'effetto desiderato.
ALTERNATIVA 2
Imposta questo XML sull'attributo di EditText
sfondo.
<?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>
Questo avrà lo stesso aspetto e il tuo aspetto EditText
su ogni API.
Puoi cambiare il colore con lo sfondo colorato
<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>
Impostare su Modifica testo
<android.support.v7.widget.AppCompatEditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/bg_edittext"/>
Usa questo metodo .. e modificalo secondo i tuoi nomi di visualizzazione. Questo codice funziona alla grande.
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 vuoi una linea piatta, puoi farlo facilmente con xml. Ecco l'esempio 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>
Sostituisci la forma con un selettore se desideri fornire larghezza e colore diversi per l'edittext focalizzato.
L'approccio migliore consiste nell'utilizzare un attributo AppCompatEditText
with backgroundTint
dello app
spazio dei nomi. vale a dire
<android.support.v7.widget.AppCompatEditText
android:layout_width="match_parent"
app:backgroundTint="YOUR COLOR"
android:layout_height="wrap_content" />
quando lo utilizziamo android:backgroundTint
funzionerà solo in API21 o più, ma app:backgroundTint
funziona a tutti i livelli API della tua app.
<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" />
** si tratta di fare con vista **
Prova nel modo seguente, convertirà il colore della riga inferiore di EditText, se utilizzato come proprietà di sfondo.
<?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>