web-dev-qa-db-fra.com

Problème: modifier la couleur de la bordure ou le contour de la zone pour TextInputLayout non focalisé dans android

J'ai un problème très spécifique pour changer le contour de la zone de texte pour TextInputLayout lorsqu'elle n'est pas mise au point. Je n'arrive pas à trouver un attribut pour changer la couleur de la bordure de ma zone de texte "floue".

Voici un exemple visuel de ce que j'essaie de faire:

La couleur de cette (zone de texte): la bordure n'est pas blanche. actuellement ce n'est pas concentré. Après avoir cliqué dessus, il devient blanc:

Je ne sais pas ce que je dois changer, il ne semble pas y avoir d'attribut pour le changer.

J'utilise également des styles de disposition de saisie de texte de conception matérielle, bien que je ne vois pas si cela l'affectera.

Voici mon code xml pour la zone de texte:

 <other layouts ... >
     <RelativeLayout
            Android:layout_width="match_parent"
            Android:layout_height="70dp"
            Android:layout_gravity="bottom"
            Android:layout_margin="5dp"
            Android:background="@drawable/item_recycler_view">

            <Android.support.design.widget.TextInputLayout
                Android:id="@+id/dialog_text_input_layout"
                style="@style/Widget.AppTheme.TextInputLayoutList"
                Android:layout_width="match_parent"
                Android:layout_height="wrap_content"
                Android:hint="Quick Add..."
                Android:textColorHint="@color/colorWhite"
                app:boxStrokeColor="@color/colorWhite"
                app:errorEnabled="true"
                >

                <Android.support.design.widget.TextInputEditText
                    Android:id="@+id/dialog_edit_text"
                    Android:layout_width="match_parent"
                    Android:layout_height="wrap_content"
                    Android:inputType="text"
                    Android:maxLines="1"
                    Android:textColor="@color/colorWhite"
                    Android:textSize="14sp" />
            </Android.support.design.widget.TextInputLayout>
        </RelativeLayout>
 </other layouts...>

Et voici les styles que j'utilise pour cela:

<style name="TextAppearance.AppTheme.TextInputLayout.HintTextAlt" parent="TextAppearance.MaterialComponents.Subtitle2">
    <item name="Android:textColor">@color/colorWhite</item>
</style>

<style name="Widget.AppTheme.TextInputLayoutList" parent="Widget.MaterialComponents.TextInputLayout.OutlinedBox">
    <item name="hintTextAppearance">@style/TextAppearance.AppTheme.TextInputLayout.HintTextAlt</item>
    <item name="boxStrokeColor">@color/colorWhite</item>
    <item name="boxCornerRadiusBottomEnd">5dp</item>
    <item name="boxCornerRadiusBottomStart">5dp</item>
    <item name="boxCornerRadiusTopEnd">5dp</item>
    <item name="boxCornerRadiusTopStart">5dp</item>
    <item name="Android:layout_margin">5dp</item>
</style>

Merci, toute aide ou suggestion est la bienvenue!

8
Varun Govind

Si vous souhaitez définir la couleur de la zone de contour en mode flou au lieu du noir par défaut, vous devez ajouter cette ligne dans colors.xml fichier qui remplacera la couleur par défaut de la zone de contour.

copiez cette ligne telle quelle. vous pouvez changer la couleur comme vous le souhaitez.

<color name="mtrl_textinput_default_box_stroke_color">#fff</color>

jusqu'à présent, cela fonctionnera, pour plus de contrôle sur TextInputLayout, vous pouvez ajouter ce style dans styles.xml

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

puis ajoutez un thème à TextInputLayout

Android:theme="@style/TextInputLayoutStyle"
30
Amjad

Réponse d'Amjad avait raison, mais à partir de 1.1.0-alpha02 (probablement même alpha01) après cela problème a été résolu, il est possible de définir la couleur dans la liste des états de couleur utilisant le même attribut boxStrokeColor, par exemple comment c'est fait dans lib:

<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
  <item Android:color="?attr/colorPrimary" Android:state_focused="true"/>
  <item Android:alpha="0.87" Android:color="?attr/colorOnSurface" Android:state_hovered="true"/>
  <item Android:alpha="0.12" Android:color="?attr/colorOnSurface" Android:state_enabled="false"/>
  <item Android:alpha="0.38" Android:color="?attr/colorOnSurface"/>
</selector>
2
dilix