【问题标题】:How to turn off default features of material design EditText in android?如何在android中关闭材料设计EditText的默认功能?
【发布时间】:2021-08-07 21:28:55
【问题描述】:

我在我的 Android 应用程序中使用了材料设计“com.google.android.material:material:1.3.0”(只是为密码字段添加密码切换)。我不希望在我的 EditText 中包含其他材料功能。正如您在屏幕截图中看到的那样,当触摸 PasswordEditText 时,会出现蓝线并且提示文本会上升。我怎样才能摆脱它们并在材料设计功能之间只留下密码切换?

PasswordEditText 的 XML:

<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>

【问题讨论】:

    标签: android xml android-edittext material-design android-textinputlayout


    【解决方案1】:

    删除:

    • 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>
    

    【讨论】:

      【解决方案2】:

      您需要进行两项更改:

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

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

      编辑: 如果仅此一项不起作用,请添加到您的 TextInputLayout:

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

      您需要将app:hintEnabled="false" 用于您的TextInputLayout 并将提示设置为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>
      

      【讨论】:

      • 感谢您的回答。我已经按照你说的做了一切。浮动提示已被删除,但行没有。 'app:boxBackgroundMode="none"' 没有帮助。
      • @Jakhongir 尝试使用app:boxStrokeWidth 更新答案,看看是否有任何不同。
      猜你喜欢
      • 2021-08-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多