如何在android中关闭材料设计EditText的默认功能?
Posted
技术标签:
【中文标题】如何在android中关闭材料设计EditText的默认功能?【英文标题】:How to turn off default features of material design EditText in android? 【发布时间】: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_
android:layout_marginTop="36dp"
android:layout_marginRight="46dp"
android:layout_marginLeft="46dp"
android:paddingLeft="5dp"
android:layout_
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_
android:layout_
android:textSize="20sp"
android:paddingBottom="10dp"
android:paddingTop="10dp"
android:inputType="textPassword"
android:drawablePadding="5dp"/>
</com.google.android.material.textfield.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_
android:layout_
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_
android:layout_
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】:您需要进行两项更改:
-
删除蓝色下划线并使用您自己的背景:
您需要将app:boxBackgroundMode="none"
设置为您的TextInputLayout
编辑:
如果仅此一项不起作用,请添加到您的 TextInputLayout
:
app:boxStrokeWidth="0dp"
app:boxStrokeWidthFocused="0dp"
-
禁用浮动提示:
您需要将app:hintEnabled="false"
用于您的TextInputLayout
并将提示设置为TextInputEditText
因此您的最终代码将如下所示:(请添加您的背景,因为我已删除以进行测试)
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/editTextTextPersonName2"
android:layout_
android:layout_
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_
android:layout_
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
更新答案,看看是否有任何不同。以上是关于如何在android中关闭材料设计EditText的默认功能?的主要内容,如果未能解决你的问题,请参考以下文章