J'ai un écran Android qui prend les courriels de l'utilisateur. Ci-dessous, l'extrait de code, je veux supprimer le soulignement qui apparaît sous le texte.
<com.google.Android.material.textfield.TextInputLayout
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:layout_margin="8dp"
Android:hint="@string/email"
Android:textColorHint="@color/blueBackground"
app:boxBackgroundColor="@color/input_background"
app:boxCornerRadiusBottomEnd="20dp"
app:boxCornerRadiusBottomStart="20dp"
app:boxCornerRadiusTopEnd="20dp"
app:boxCornerRadiusTopStart="20dp"
app:endIconMode="clear_text"
app:endIconTint="@color/blueBackground"
app:hintTextColor="@color/blueBackground">
<com.google.Android.material.textfield.TextInputEditText
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:textColor="@color/blueBackground"
Android:textSize="18sp"
Android:layout_margin="8dp" />
</com.google.Android.material.textfield.TextInputLayout>
J'ai essayé Android:background="@null"
et
<item name="colorControlNormal">@Android:color/transparent</item> <item name="colorControlActivated">@Android:color/transparent</item>
Mais ça ne fonctionne pas.
Faites votre TextInputLayout personnalisé comme ceci
package com.google.Android.material.textfield
import Android.content.Context
import Android.util.AttributeSet
class TextInputLayoutWithoutUnderline @JvmOverloads constructor(
context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0
) : TextInputLayout(context, attrs, defStyleAttr) {
override fun updateEditTextBackground() {
// XXX don't call super on purpose
}
}
L'ajout de cette ligne sur TextInputLayout
fonctionne pour moi:
app:boxStrokeWidth="0dp"
MISE À JOUR
Dans le répertoire color res, ajoutez le fichier et_box_color.xml et ajoutez les lignes ci-dessous à l'intérieur:
<selector xmlns:Android="http://schemas.Android.com/apk/res/Android" >
<item Android:color="@color/transparent"
Android:state_pressed="true"
Android:state_focused="true"
Android:state_selected="true"
Android:state_checkable="true"
Android:state_checked="true"
Android:state_enabled="true"
Android:state_window_focused="true"/>
</selector>
Maintenant, ajoutez votre texte d'édition de matériel comme ci-dessous:
<com.google.Android.material.textfield.TextInputLayout
Android:id="@+id/textInputLayout"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:background="@drawable/border"
app:boxStrokeColor="@color/et_box_color"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/llBank">
<com.google.Android.material.textfield.TextInputEditText
Android:id="@+id/etAmount"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:layout_marginBottom="1dp"
Android:background="#00FFFFFF"
Android:gravity="center"
Android:hint="Amount"
Android:imeOptions="actionDone"
Android:inputType="numberDecimal" />
</com.google.Android.material.textfield.TextInputLayout>
J'ai ajouté un arrière-plan pour créer une bordure de TextInputLayout, supprimez l'arrière-plan de TextInputLayout si vous n'en avez pas besoin. Le fond de TextInputEditText sera nécessaire pour rendre le fond transparent.
Définir l'arrière-plan de TextInputLayout sur un dessinable et celui de TextInputEditText sur transparent supprime le soulignement:
<com.google.Android.material.textfield.TextInputLayout
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:layout_margin="8dp"
Android:hint="@string/email"
Android:background="@drawable/blue_drawable"
app:endIconMode="clear_text"
app:endIconTint="@color/black"
app:hintTextColor="@color/black">
<com.google.Android.material.textfield.TextInputEditText
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:textColor="@color/black"
Android:background="@Android:color/transparent"
Android:textSize="18sp"
Android:layout_margin="8dp" />
</com.google.Android.material.textfield.TextInputLayout>
blue_drawable.xml
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:shape="rectangle">
<corners Android:radius="20dp"/>
<solid Android:color="@Android:color/holo_blue_bright"/></shape>
Si vous voulez une application: boxBackgroundMode avec rempli et sans soulignement, cela fonctionnera
<item name="boxStrokeWidthFocused">0dp</item>
<item name="boxStrokeWidth">0dp</item>
Moyen facile;
app:boxBackgroundMode="filled"
app:boxStrokeWidth="0dp"