Ändern Sie die TextInputLayout-Umrissfarbe

Lesezeit: 6 Minuten

Benutzer-Avatar
Addev

Ich versuche, ein TextInputLayout mit Materialstil anzupassen. Ich habe es geschafft, den fokussierten Zustand auf die gewünschten Farben einzustellen:

Geben Sie hier die Bildbeschreibung ein

Verwenden

<com.google.android.material.textfield.TextInputLayout
     style="@style/LoginTextInputLayoutStyle"
     android:theme="@style/LoginTextInputLayoutStyle"
     android:textColorHint="#fff"
     app:boxStrokeColor="#fff"
     .....>
          <EditText ...

Wo ist der Stil:

<style name="LoginTextInputLayoutStyle" parent="Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense">
    <item name="colorAccent">#fff</item>
</style>   

Aber wenn die Texteingabe nicht fokussiert ist, bekomme ich diesen Look:

Geben Sie hier die Bildbeschreibung ein

Wie kann ich die Farbe der schwarzen Linie auch in weiß ändern?

  • Können wir eine umrissene Box in der Textansicht mit mehreren automatischen Vervollständigungen hinzufügen?

    – Shashwat Gupta

    2. November 2018 um 7:54 Uhr

  • Verwenden Sie die akzeptierte Antwort nur bei fokussierter Farbe, nicht wenn die Steuerung nicht fokussiert ist. Hat es für Sie funktioniert? wie?

    – Akshay bhange

    28. März 2019 um 12:18 Uhr

  • Danke für die Arbeitsprobe! Wendete dies und einige Anpassungen an und brachte das Materialthema zum Laufen.

    – HX_unbanned

    14. Februar um 16:54 Uhr


Benutzer-Avatar
Rutvik Bhatt

Verwenden Sie diesen Stil, um Rahmenfarbe und Rahmenbreite wie folgt anzuwenden:

<style name="LoginTextInputLayoutStyle" parent="Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense">
    <item name="boxStrokeColor">#fff</item>
    <item name="boxStrokeWidth">2dp</item>
</style>

Weitere Details zum Styling erhalten Sie hier Verknüpfung

Fügen Sie die folgende Zeile in Ihrer hinzu colors.xml Datei, die die Standardfarbe für überschreibt TextInputLayout

<color name="mtrl_textinput_default_box_stroke_color" tools:override="true">#fff</color>

  • Dies ändert die Kontur im fokussierten Modus, hat aber immer noch eine schwarze Kontur, wenn der Bearbeitungstext nicht fokussiert ist = (

    – Addev

    12. Juni 2018 um 17:02 Uhr

  • @Addev überprüfen Sie meine bearbeitete Antwort und fügen Sie Farbe in Ihre colors.xml-Datei ein.

    – Rutvik Bhatt

    13. Juni 2018 um 5:28 Uhr

  • @RutvikBhatt danke. Aber Android Studio sagt, dass die Ressource privat ist und ohne Vorankündigung verschwinden könnte. Es gibt keine bessere Lösung?

    – Kreker

    28. Juli 2018 um 1:29 Uhr

  • @RutvikBhatt Was ist mit der Hinweistextfarbe im nicht fokussierten Modus?

    – Parikshit Chalke

    16. Oktober 2018 um 10:00 Uhr

  • @RutvikBhatt Wenn ich die Standardfarbe in Farbe geändert habe, wird die Farbe des umrandeten Felds in allen Aktivitäten geändert, aber ich möchte eine andere Strichfarbe für verschiedene Aktivitäten. Was soll ich dann damit machen?

    – Shashwat Gupta

    16. November 2018 um 11:27 Uhr

Benutzer-Avatar
kroot

Ab Version 1.1.0-alpha02 der Materialkomponenten für Android funktioniert es, einfach eine zu erstellen ColorStateList für diese Artikel. Das Verfahren ist wie folgt:

Erstellen Sie ein neues Ressourcenverzeichnis “color” in res und fügen Sie in color eine Farbressourcendatei mit dem Namen “text_input_box_stroke.xml” hinzu. res/color/text_input_box_stroke.xml stell mal so was ein:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="#fcc" android:state_focused="true"/>
    <item android:color="#cfc" android:state_hovered="true"/>
    <item android:color="#ccf"/>
</selector>

Dann in deiner styles.xml du würdest setzen:

<style name="LoginTextInputLayoutStyle" parent="Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense">
    <item name="boxStrokeColor">@color/text_input_box_stroke</item>
</style>

Geben Sie schließlich Ihren Stil für die eigentliche an TextInputLayout:

<com.google.android.material.textfield.TextInputLayout
    android:id="@+id/my_layout_id"
    style="@style/LoginTextInputLayoutStyle"
    ...

  • Das hat bei mir tatsächlich funktioniert com.google.android.material:material:1.0.0. Aber ich habe verwendet Widget.MaterialComponents.TextInputLayout.OutlinedBox als Basisstil (nicht dicht)

    – Wadim Kotow

    25. Juni 2019 um 15:31 Uhr


  • @VadimKotov es hat bei mir mit denselben Konfigurationen nicht funktioniert

    – Devansh Maurya

    27. Juni 2019 um 14:39 Uhr

  • wie man die Grenze mit der InputBox ändert, da sie im Fokuszustand dicker ist

    – Hai Hack

    13. Juni 2020 um 2:53 Uhr

  • Perfekt funktioniert, ich habe dem Stil einige andere Elemente hinzugefügt, um auch die Hinweisfarbe usw. zu ändern

    – Arielle

    1. August 2020 um 5:50 Uhr

  • Dies muss die beabsichtigte Methode sein und nicht der Rat, eine interne Farbe zu überschreiben, die möglicherweise nicht mehr existiert

    – Douglas Jones

    18. Dezember 2021 um 1:05 Uhr

Ab Material Components Alpha 7 erstellen Sie einfach eine Farbauswahldatei wie folgt: colors/text_input_outline_color.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_enabled="true" android:color="@color/buttonDark"/>
    <item android:state_hovered="true" android:color="@color/buttonDark"/>
    <item android:state_focused="true" android:color="@color/buttonDark"/>
    <item android:color="@color/buttonDark"/>
</selector>

Für mehr Kontext dazu, wie dies eingestellt wird. Hier ist relevanter Quellcode:

ColorStateList boxStrokeColorStateList =
    MaterialResources.getColorStateList(context, a, R.styleable.TextInputLayout_boxStrokeColor);
if (boxStrokeColorStateList != null && boxStrokeColorStateList.isStateful()) {
  defaultStrokeColor = boxStrokeColorStateList.getDefaultColor();
  disabledColor =
      boxStrokeColorStateList.getColorForState(new int[] {-android.R.attr.state_enabled}, -1);
  hoveredStrokeColor =
      boxStrokeColorStateList.getColorForState(new int[] {android.R.attr.state_hovered}, -1);
  focusedStrokeColor =
      boxStrokeColorStateList.getColorForState(new int[] {android.R.attr.state_focused}, -1);
} else {
  // If attribute boxStrokeColor is not a color state list but only a single value, its value
  // will be applied to the box's focus state.
  focusedStrokeColor =
      a.getColor(R.styleable.TextInputLayout_boxStrokeColor, Color.TRANSPARENT);
  defaultStrokeColor =
      ContextCompat.getColor(context, R.color.mtrl_textinput_default_box_stroke_color);
  disabledColor = ContextCompat.getColor(context, R.color.mtrl_textinput_disabled_color);
  hoveredStrokeColor =
      ContextCompat.getColor(context, R.color.mtrl_textinput_hovered_box_stroke_color);
}

Aus dieser Liste können Sie ersehen, dass Sie sicherstellen möchten, dass Sie einen Farbwähler mit allen definierten Zuständen verwenden, oder er wird standardmäßig auf eine andere Farbe zurückgesetzt.

Entfernen Sie zuerst aus Ihrem TextInputLayout

<item name="boxStrokeColor">@color/YourColor</item>

Zweitens fügen Sie ein neues Farbattribut hinzu

 <color name="mtrl_textinput_default_box_stroke_color" tools:override="true" >YourColor</color>

Muss den gleichen Namen schreiben mtrl_textinput_default_box_stroke_color nicht ändern

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_focused="true" android:color="#FFFFFF"/>

<item android:state_focused="false" android:color="#FFFFFF"/></selector>

Erstellen Sie das Farbverzeichnis und erstellen Sie darin eine Ressourcendatei. Fügen Sie den obigen Code in die XML-Datei des Farbverzeichnisses ein und fügen Sie im Texteingabe-Layoutstil die folgende Zeile ein

<item name="boxStrokeColor">@color/focus_tint_list</item>

Benutzer-Avatar
ॐ Rakesh Kumar

Ich erstelle dynamisch meinen Bildschirm. Ich benutze TextInputLayout und erstelle meinen dynamischen Bearbeitungstext in TextInputLayout. Wenn Sie geben möchten TextInputLayout bis zur Grenze führen Sie die folgenden Schritte der Reihe nach aus.

1- Build.gradle einschließen;

implementation 'com.google.android.material:material:1.0.0'

2- im Kotlin-Code;

val textInputLayout = TextInputLayout(this)
        textInputLayout.apply {
            boxStrokeColor = Color.parseColor("#E68A06")
            setBoxBackgroundMode(TextInputLayout.BOX_BACKGROUND_OUTLINE)
            setHintTextAppearance(R.style.ValidatableInputLayoutStyle_OutlineBox_HintInputLayoutStyle)
            setBoxCornerRadii(16f, 16f, 16f, 16f)
            setPadding(4, 0, 0, 0)
        }

3- style.xml

<style name="ValidatableInputLayoutStyle.OutlineBox.HintInputLayoutStyle" parent="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense">
        <item name="android:textColor">@color/colorPrimary</item>
        <item name="android:textSize">14sp</item>

Mein Komponentenbildlink

Benutzer-Avatar
TMA

Matrial Text bearbeiten

Schritt 1: Bibliothek im Modulabhängigkeitsabschnitt build.gradle(Module App) hinzufügen

Implementierung „com.android.support:design:28.0.0-alpha1“

Schritt 2: XML-Code

<com.google.android.material.textfield.TextInputLayout
            style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:boxStrokeColor="#0000FF"
            app:boxStrokeWidth="2dp"
            android:layout_gravity="center"
            >

           <com.google.android.material.textfield.TextInputEditText
                android:id="@+id/txtusername"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:hint="@string/lable" />

        </com.google.android.material.textfield.TextInputLayout>

1311740cookie-checkÄndern Sie die TextInputLayout-Umrissfarbe

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy