如何在android中关闭material设计EditText的默认功能?

How to turn off default features of material design EditText in android?

我在我的 Android 应用程序中使用了 material 设计 'com.google.android.material:material:1.3.0'(只是为密码字段添加密码切换)。我不希望其他 material 功能包含在我的 EditText.As 中,您可以在屏幕截图上看到,出现蓝线,并且当触摸 PasswordEditText 时提示文本也会出现。我怎样才能去掉它们并只保留 material 设计功能中的密码切换?

XML 的 PasswordEditText:

<com.google.android.material.textfield.TextInputLayout
    android:id="@+id/editTextTextPersonName2"
    android:layout_width="match_parent"
    android:layout_marginTop="36dp"
    android:layout_marginRight="46dp"
    android:layout_marginLeft="46dp"
    android:paddingLeft="5dp"
    android:layout_height="wrap_content"
    android:ems="10"
    android:background="@drawable/edit_text_background"
    android:drawableStart="@drawable/ic_baseline_security_24"
    android:hint="Parol"
    app:passwordToggleEnabled="true"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.503"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/editTextTextPersonName">
    <com.google.android.material.textfield.TextInputEditText
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:textSize="20sp"
        android:paddingBottom="10dp"
        android:paddingTop="10dp"
        android:inputType="textPassword"
        android:drawablePadding="5dp"/>
</com.google.android.material.textfield.TextInputLayout>

您需要进行两项更改:

  1. 删除蓝色下划线并使用您自己的背景:

您需要将 app:boxBackgroundMode="none" 设置为您的 TextInputLayout

编辑: 如果单独这样做不起作用,请添加到您的 TextInputLayout:

app:boxStrokeWidth="0dp"
app:boxStrokeWidthFocused="0dp"
  1. 要禁用浮动提示:

您需要对 TextInputLayout 使用 app:hintEnabled="false" 并将提示设置为 TextInputEditText

所以你的最终代码看起来像这样:(请添加你的背景,因为我删除了测试)

 <com.google.android.material.textfield.TextInputLayout
    android:id="@+id/editTextTextPersonName2"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginLeft="46dp"
    android:layout_marginTop="36dp"
    android:layout_marginRight="46dp"
    android:ems="10"
    android:paddingLeft="5dp"
    app:hintEnabled="false"
    android:background="@drawable/border"
    app:boxBackgroundMode="none"
    app:boxStrokeWidth="0dp"
    app:boxStrokeWidthFocused="0dp"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.503"
    app:layout_constraintStart_toStartOf="parent"
    app:passwordToggleEnabled="true">

    <com.google.android.material.textfield.TextInputEditText
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:drawablePadding="5dp"
        android:hint="Parol"
        android:inputType="textPassword"
        android:paddingTop="10dp"
        android:paddingBottom="10dp"
        android:textSize="20sp" />
</com.google.android.material.textfield.TextInputLayout>

删除:

  • android:background="@drawable/edit_text_background"

更新:

  • android:drawableStart="@drawable/ic_baseline_security_24"
  • app:passwordToggleEnabled="true"

至:

  • app:startIconDrawable="@drawable/ic_baseline_security_24"
  • app:endIconMode="password_toggle"

并使用 TextInputLayout 的标准功能实现相同的布局:

        <com.google.android.material.textfield.TextInputLayout
            android:id="@+id/editTextTextPersonName2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:ems="10"
            style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
            app:shapeAppearanceOverlay="@style/ShapeAppearanceOverlay.App.CornerCircle"
            app:boxStrokeColor="@color/...."
            app:startIconDrawable="@drawable/..."
            app:endIconMode="password_toggle"
            app:placeholderText="Parol"
            >
            <com.google.android.material.textfield.TextInputEditText
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:textSize="20sp"
                android:inputType="textPassword"
                />
        </com.google.android.material.textfield.TextInputLayout>

与:

<style name="ShapeAppearanceOverlay.App.CornerCircle" parent="">
    <item name="cornerFamily">rounded</item>
    <item name="cornerSize">50%</item>
</style>