如何更改 TextInputLayout android 中 setEndIconDrawable 的可见性(可见、不可见或消失)?

问题描述 投票:0回答:6

我试图使 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>

我想得到如下图所示的内容:

android android-drawable android-textinputlayout material-components-android
6个回答
6
投票

如果您想在布局中(静态方式)执行此操作,只需不要添加

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

3
投票

我尝试了@Gabriele Mariotti 的答案。这很好,但有一个问题。我使用代码使 endicon 在文本观察器中可见或不可见,但它没有按预期工作。然后我对 textInputLayout 使用了 isEndIconVisible 属性,并判断它是真是假。它按预期正常工作。


1
投票

2022 Kotlin

最佳解决方案:

textInputLayout.isEndIconVisible = false

0
投票

在此添加以下步骤

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


0
投票

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


-5
投票

添加这个

android:visibility="gone"

© www.soinside.com 2019 - 2024. All rights reserved.