Ich erstelle einen EditText in meiner Layout-XML-Datei
Aber ich möchte die Farblinie in EditText von Holo (zum Beispiel) in Rot ändern. Wie geht das?
Dies ist das beste Werkzeug, das Sie für alle Ansichten verwenden können. Es ist KOSTENLOS dank @ Jérôme Van Der Linden .
Mit dem Android Holo Colors Generator können Sie auf einfache Weise Android-Komponenten wie EdiText
oder Spinner mit Ihren eigenen Farben für Ihre Android-Anwendung erstellen. Es werden alle neun erforderlichen Patch-Assets sowie zugehörige XML-Zeichenelemente und -Stile generiert, die Sie direkt in Ihr Projekt kopieren können.
UPDATE 1
Diese Domain scheint abgelaufen zu sein, aber das Projekt ist Open Source, das Sie hier finden können
versuch es
dieses Bild im Hintergrund von EditText
einfügen
Android:background="@drawable/textfield_activated"
UPDATE 2
Für API 21 oder höher können Sie Android:backgroundTint
verwenden.
<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 AppCompatEditText
Rückenunterstützung
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 Support Library und AppCompatEditText verwenden.
Hinweis: Wir müssen app: backgroundTint anstelle von Android: backgroundTint verwenden.
Sie können die Unterstrichfarbe 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" />
Programmgesteuert können Sie Folgendes versuchen:
editText.getBackground().mutate().setColorFilter(getResources().getColor(Android.R.color.holo_red_light), PorterDuff.Mode.SRC_ATOP);
für ein API unter 21 können Sie ein Theme-Attribut in edittext
<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 als
<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" />
ich denke, der beste Weg ist das 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="addressbookitem_edit_style" 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>
<Android.support.v7.widget.AppCompatEditText
style="@style/addressbookitem_edit_style"/>
Um die Unterstreichungsfarbe von Edittext zu ändern:
Wenn Sie möchten, dass die gesamte App diesen Stil freigibt, können Sie folgendermaßen vorgehen.
(1) Gehen Sie zur Datei styles.xml. Ihre AppTheme, die das übergeordnete Element von Theme.AppCompat.Light.DarkActionBar (in meinem Fall) erbt, wird das Stammeltern aller ihrer Style-Dateien in Ihrer App sein. Ändern Sie den Namen in "AppBaseTheme". Erstellen Sie einen anderen Stil direkt darunter, der den Namen AppTheme hat und von AppBaseTheme erbt, das 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 "colorAccent" in die Farbe, in der Sie die Farbe der EditText-Linie haben möchten.
(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 gilt speziell für KitKat und höher. Ändern Sie das übergeordnete Element in AppBaseTheme und stellen Sie sicher, dass "colorAccent" entfernt wird, damit die Farbe des übergeordneten Elements nicht überschrieben wird. Sie müssen auch die Elemente beibehalten, die für Version 19 spezifisch sind. Dann wird es so aussehen.
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="AppBaseTheme">
<item name="Android:windowTranslucentStatus">true</item>
</style>
</resources>
Die Farbe der Linie wird durch die Hintergrundeigenschaft von EditText
definiert. Um es zu ändern, sollten Sie den Android:background
in der Layoutdatei ändern.
Ich sollte beachten, dass dieser Stil durch die Verwendung eines 9-Patches erreicht wird. Wenn Sie in das SDK schauen, können Sie sehen, dass der Hintergrund der EditText
dieses Bild ist:
Um es zu ändern, können Sie es in einem Bildbearbeitungsprogramm öffnen und in der gewünschten Farbe einfärben. Speichern Sie es als bg_edit_text.9.png
und legen Sie es dann in Ihren Zeichnungsordner. Jetzt können Sie es als Hintergrund für Ihre EditText
verwenden:
Android:background="@drawable/bg_edit_text"
Es ist ziemlich einfach (Erforderlich: Mindest-API 21) ...
Codierung beibehalten ........ :)
Sie können die Farbe ändern, indem Sie den Hintergrund einfärben
<EditText
Android:backgroundTint="@color/red"/>
Der Hintergrund von Widgets ist abhängig von API-Ebene .
ALTERNATIVE 1
Sie können Ihrem EditText
-Hintergrund ein benutzerdefiniertes Bild zur Verfügung stellen
Android:background="@drawable/custom_editText"
Ihr Bild sollte ungefähr so aussehen. Sie erhalten den gewünschten Effekt.
ALTERNATIVE 2
Setzen Sie dieses XML auf Ihr Hintergrundattribut EditText
.
<?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 hat das gleiche Aussehen und Verhalten Ihrer EditText
auf jeder API.
Wenn Sie eine flache Linie wünschen, können Sie dies problemlos 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 eine Auswahl, wenn Sie für fokussiertes Edittext unterschiedliche Breite und Farbe angeben möchten.
Sie können die Farbe von EditText mithilfe der folgenden Codezeile programmgesteuert ändern: edittext.setBackgroundTintList(ColorStateList.valueOf(yourcolor));
Verwenden Sie diese Methode .. und ändern Sie sie entsprechend den Ansichtsnamen. Dieser Code funktioniert gut.
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());
}
Am besten verwenden Sie ein AppCompatEditText
mit backgroundTint
-Attribut von app
-Namespace. d.h.
<Android.support.v7.widget.AppCompatEditText
Android:layout_width="match_parent"
app:backgroundTint="YOUR COLOR"
Android:layout_height="wrap_content" />
wenn wir Android:backgroundTint
verwenden, funktioniert es nur in API21 oder mehr, aber app:backgroundTint
funktioniert auf allen API-Ebenen, die Ihre App unterstützt.
<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 mit Sicht zu tun **
Versuchen Sie es folgendermaßen: Es konvertiert die untere Farbe von EditText, 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>
Verwenden Sie Android: Hintergrundeigenschaft für diesen Edittext. Übergeben Sie Ihr zeichnerisches Ordnerbild an ihn Zum Beispiel
Android:background="@drawable/abc.png"
Dies können Sie einfach tun, indem Sie diesen Android:theme="@style/AppTheme.AppBarOverlay
als Attribut für Ihren editText Hinzufügen und diesen <style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />
zu Ihren Stilen hinzufügen
drawable/bg_edittext.xml
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item Android:gravity="bottom">
<shape>
<size Android:height="1dp" />
<solid Android:color="@Android:color/black" />
</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"/>