我试图使 endIconDrawable 不可见或不可见,它是上图中仅用于名字字段的编辑图标,并且希望保留其余字段的可见编辑图标,但无法做到?我该怎么做?
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/tilFirstName"
android:layout_width="match_parent"
android:layout_height="@dimen/_64dp"
app:endIconDrawable="@drawable/icon_edit"
app:endIconMode="custom">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/etFirstName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:focusableInTouchMode="false"
android:hint="@string/label_fname"
android:inputType="textCapWords" />
</com.google.android.material.textfield.TextInputLayout>
我想得到如下图所示的内容:
如果您想在布局中(静态方式)执行此操作,只需不要添加
app:endIconDrawable
/app:endIconMode
属性:
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/tilFirstName"
android:layout_width="match_parent"
android:layout_height="@dimen/_64dp">
以编程方式删除
endIconDrawable
,您可以使用:
textInputLayout.setEndIconMode(TextInputLayout.END_ICON_NONE);
要添加
endIconDrawable
,您可以使用:
textInputLayout.setEndIconMode(TextInputLayout.END_ICON_CUSTOM);
textInputLayout.setEndIconDrawable(R.drawable.xxxx);
我尝试了@Gabriele Mariotti 的答案。这很好,但有一个问题。我使用代码使 endicon 在文本观察器中可见或不可见,但它没有按预期工作。然后我对 textInputLayout 使用了 isEndIconVisible 属性,并判断它是真是假。它按预期正常工作。
2022 Kotlin
最佳解决方案:
textInputLayout.isEndIconVisible = false
在此添加以下步骤
com.google.android.material.textfield.TextInputLayout
app:passwordToggleEnabled="true"
app:endIconMode="custom"
app:endIconCheckable="false"
app:endIconDrawable="@drawable/sv_password_hide"
完整代码
<com.google.android.material.textfield.TextInputLayout
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
android:layout_width="320dp"
android:id="@+id/txtlay"
android:layout_height="60dp"
app:boxBackgroundColor="@color/card_view_bg"
app:boxCornerRadiusBottomEnd="10dp"
app:boxCornerRadiusBottomStart="10dp"
app:boxCornerRadiusTopEnd="10dp"
app:boxCornerRadiusTopStart="10dp"
app:boxStrokeColor="@color/input_Field_stroke"
app:boxStrokeWidth=".5dp"
app:passwordToggleEnabled="true"
app:endIconMode="custom"
app:endIconCheckable="false"
app:endIconDrawable="@drawable/sv_password_hide"
app:hintTextColor="@color/input_hint">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/inpCurPass"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fontFamily="@font/opensans_regular"
android:hint="@string/current_password"
android:inputType="textPassword"
android:maxLines="1"
android:padding="10dp"
android:singleLine="true"
android:textSize="15sp"
android:windowSoftInputMode="adjustPan" />
</com.google.android.material.textfield.TextInputLayout>
在 kotlin 文件中(活动/片段)
mBind.txtlay.setEndIconOnClickListener {
val s = mBind.txtlay.isEndIconCheckable
mBind.txtlay.setEndIconMode(TextInputLayout.END_ICON_CUSTOM)
if (s) {
mBind.txtlay.isEndIconCheckable = false
mBind.txtlay.setEndIconDrawable(R.drawable.sv_password_hide)
mBind.inpCurPass.inputType =
InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_VARIATION_PASSWORD
} else {
mBind.txtlay.isEndIconCheckable = true
mBind.txtlay.setEndIconDrawable(R.drawable.sv_password_show)
mBind.inpCurPass.inputType =
InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD
}
}
enter code here
1.- 定义 XLM 不可见:textInputLayout
enter code here
2.- 定义 TextInputLayout mtextInputLayout;
enter code here
3.- 导入 enter code here
com.google.android.material.textfield.TextInputLayout
enter code here
4.- mtextInputLayout = findViewById(R.id.textInputLayout);
enter code here
5.- mtextInputLayout.setVisibility(View.VISIBLE);
添加这个
android:visibility="gone"