Antworten:
Dies ist das beste Tool, das Sie für alle Ansichten verwenden können, und dank @ Jérôme Van Der Linden ist es KOSTENLOS .
Mit dem Android Holo Colors Generator können Sie ganz einfach Android-Komponenten wie EditText
oder Spinner mit Ihren eigenen Farben für Ihre Android-Anwendung erstellen. Es werden alle erforderlichen neun Patch-Assets sowie die dazugehörigen XML-Zeichen und Stile generiert, die Sie direkt in Ihr Projekt kopieren können.
UPDATE 1
Diese Domain scheint abgelaufen zu sein, aber das Projekt ist eine Open Source, die Sie hier finden können
Versuch es
Dieses Bild im Hintergrund von EditText
android:background="@drawable/textfield_activated"
UPDATE 2
Für API 21 oder höher können Sie verwenden 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" />
Update 3
Jetzt haben wir mit RückenunterstützungAppCompatEditText
Hinweis: Wir müssen app: backgroundTint anstelle von android: backgroundTint verwenden
<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" />
Ich mag keine vorherigen Antworten. Die beste Lösung ist zu verwenden:
<android.support.v7.widget.AppCompatEditText
app:backgroundTint="@color/blue_gray_light" />
android:backgroundTint
für EditText
funktioniert nur auf API21 + . Aus diesem Grund müssen wir die Support-Bibliothek und verwenden AppCompatEditText
.
Hinweis: Wir müssen app:backgroundTint
anstelle von verwendenandroid:backgroundTint
AndroidX-Version
<androidx.appcompat.widget.AppCompatEditText
app:backgroundTint="@color/blue_gray_light" />
Sie können die Unterstreichungsfarbe des EditText auch schnell ändern, indem Sie den Hintergrund des EditText wie folgt tönen:
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Something or Other"
android:backgroundTint="@android:color/holo_green_light" />
Für APIs unter 21 können Sie das Theme-Attribut verwenden, EditText
um den folgenden Code in die Style-Datei einzufügen
<style name="MyEditTextTheme">
<item name="colorControlNormal">#FFFFFF</item>
<item name="colorControlActivated">#FFFFFF</item>
<item name="colorControlHighlight">#FFFFFF</item>
</style>
Verwenden Sie diesen Stil in EditText
as
<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" />
Programmatisch können Sie versuchen:
editText.getBackground().mutate().setColorFilter(getResources().getColor(android.R.color.holo_red_light), PorterDuff.Mode.SRC_ATOP);
Ich denke, der beste Weg ist nach Thema:
<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"/>
So ändern Sie die Unterstreichungsfarbe von Edittext:
Wenn Sie möchten, dass die gesamte App diesen Stil teilt, können Sie wie folgt vorgehen.
(1) Gehen Sie zur Datei styles.xml. Ihr AppTheme, das das übergeordnete Element von Theme.AppCompat.Light.DarkActionBar (in meinem Fall) erbt, ist das übergeordnete Element aller Stildateien in Ihrer App. Ändern Sie den Namen in "AppBaseTheme". Erstellen Sie direkt darunter einen anderen Stil, der den Namen AppTheme trägt und von AppBaseTheme erbt, den Sie gerade bearbeitet haben. Es wird wie folgt aussehen:
<!-- 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>
Ändern Sie dann den „colorAccent“ in die Farbe, die Ihre EditText-Linienfarbe haben soll.
(2) Wenn Sie andere Werteordner mit style.xml haben, ist dieser Schritt sehr wichtig. Weil diese Datei von Ihrer vorherigen übergeordneten XML-Datei erbt. Zum Beispiel habe ich values-19 / styles.xml. Dies ist speziell für Kitkat und höher. Ändern Sie das übergeordnete Element in AppBaseTheme und entfernen Sie "colorAccent", damit die übergeordnete Farbe nicht überschrieben wird. Außerdem müssen Sie die für Version 19 spezifischen Elemente behalten. Dann sieht es so aus.
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="AppBaseTheme">
<item name="android:windowTranslucentStatus">true</item>
</style>
</resources>
Es ist ziemlich einfach (Erforderlich: Minimum API 21) ...
Codierung weiter ........ :)
Die Farbe der Linie wird durch EditText
die Hintergrundeigenschaft definiert . Um es zu ändern, sollten Sie das android:background
in der Layoutdatei ändern .
Ich sollte beachten, dass dieser Stil durch die Verwendung eines 9-Patch-Drawable erreicht wird. Wenn Sie in das SDK schauen, können Sie sehen, dass der Hintergrund desEditText
folgenden Bildes ist:
Um es zu ändern, können Sie es in einem Bildbearbeitungsprogramm öffnen und in der gewünschten Farbe ausmalen. Speichern Sie es als bg_edit_text.9.png
und legen Sie es dann in Ihrem Zeichenordner ab. Jetzt können Sie es als Hintergrund für Ihre EditText
Art anwenden, so:
android:background="@drawable/bg_edit_text"
Sie können die Farbe von EditText programmgesteuert ändern, indem Sie nur diese Codezeile verwenden:edittext.setBackgroundTintList(ColorStateList.valueOf(yourcolor));
Der Hintergrund von Widgets hängt von der API-Ebene ab .
ALTERNATIVE 1
Sie können Ihrem EditText
Hintergrund ein benutzerdefiniertes Bild hinzufügen, indem Sie
android:background="@drawable/custom_editText"
Ihr Bild sollte ungefähr so aussehen. Es gibt Ihnen den gewünschten Effekt.
ALTERNATIVE 2
Setzen Sie diese XML auf Ihr EditText
Hintergrundattribut.
<?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>
Dies sieht EditText
auf jeder API gleich aus.
Sie können die Farbe ändern, indem Sie den Hintergrund tönen
<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>
Auf EditText setzen
<android.support.v7.widget.AppCompatEditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/bg_edittext"/>
Verwenden Sie diese Methode .. und ändern Sie sie entsprechend Ihren Ansichtsnamen. Dieser Code funktioniert hervorragend.
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());
}
Wenn Sie eine flache Linie wünschen, können Sie dies einfach mit XML tun. Hier ist das XML-Beispiel:
<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>
Ersetzen Sie die Form durch einen Selektor, wenn Sie für fokussierten Edittext eine andere Breite und Farbe bereitstellen möchten.
Der beste Ansatz ist die Verwendung eines AppCompatEditText
with- backgroundTint
Attributs des app
Namespace. dh
<android.support.v7.widget.AppCompatEditText
android:layout_width="match_parent"
app:backgroundTint="YOUR COLOR"
android:layout_height="wrap_content" />
Wenn wir android:backgroundTint
es verwenden, funktioniert es nur in API21 oder höher, aber app:backgroundTint
auf allen API-Ebenen, die Ihre App ausführt .
<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" />
** es geht darum, mit Aussicht zu tun **
Versuchen Sie Folgendes: Es wird die Grundfarbe von EditText konvertiert, wenn es als Hintergrundeigenschaft verwendet wird.
<?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>