web-dev-qa-db-ja.com

Android EditTextの非表示パスワードの目のアイコン(デフォルト)からカスタムアイコンに変更します。

Android edittext。次のコードを使用してアイコンを表示しています。

<Android.support.design.widget.TextInputLayout
    Android:id="@+id/layoutTextInput"
    Android:textColorHint="@color/aluminium">
    <Android.support.v7.widget.AppCompatEditText
        Android:id="@+id/editTextValue"
        Android:imeOptions="actionNext"
        Android:layout_marginBottom="8dp"
        Android:inputType="text"/>
</Android.support.design.widget.TextInputLayout>

通常のアイコン(目のアイコン)の代わりにカスタムアイコンを使用します。私を助けてください。

10

新しい描画可能ファイルを作成し、show_password_selector.xmlという名前を付けます

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item Android:drawable="@drawable/ic_visibility_black_18dp" Android:state_checked="true"/>
<item Android:drawable="@drawable/ic_visibility_off_black_18dp"/>
</selector>

レイアウトファイルで、TextInputLayoutapp:passwordToggleDrawable属性を追加します。

<Android.support.design.widget.TextInputLayout
    Android:id="@+id/layoutTextInput"
    app:passwordToggleEnabled="true"
    app:passwordToggleDrawable="@drawable/show_password_selector"
    Android:textColorHint="@color/gray">
    <Android.support.v7.widget.AppCompatEditText
        Android:id="@+id/editTextValue"
        Android:imeOptions="actionNext"
        Android:layout_marginBottom="8dp"
        Android:inputType="text"/>
</Android.support.design.widget.TextInputLayout>

参考: https://www.youtube.com/watch?v=dW0YIV0Z9qk

21
sham.y

使用する app:passwordToggleDrawableアイコンを変更します。使用する app:passwordToggleTintアイコンの色を変更するには、これはアイコンがベクトル描画可能の場合にのみ機能します。

   <Android.support.design.widget.TextInputLayout
            Android:id="@+id/layoutTextInput"
            Android:layout_width="match_parent"
            Android:layout_height="wrap_content"
            app:passwordToggleEnabled="true"
            app:passwordToggleTint="@color/colorPrimary"
            app:passwordToggleDrawable="@drawable/ic_visibility_on">

        <Android.support.design.widget.TextInputEditText
                Android:id="@+id/editTextValue"
                Android:layout_width="match_parent"
                Android:layout_height="60dp"
                Android:drawablePadding="5dp"
                Android:imeOptions="actionNext"
                Android:inputType="textPassword"
                Android:hint="Password"/>

    </Android.support.design.widget.TextInputLayout>
4
Hussain

デフォルトの目のアイコン(パスワードの表示/非表示)を使用したいが、アイコンの色を変更する場合は、次の行を追加します。

app:passwordToggleTint="@color/yourColor"

カスタムの目のアイコンを使用する場合は、使用する必要があります

app:passwordToggleDrawable 

アイコンを変更します。そして使用する

app:passwordToggleTint 

アイコンの色を変更します。カスタムアイコンの色は表示されません。色合いの色が表示されます。以下のようなxmlコード全体:

<Android.support.design.widget.TextInputLayout
        Android:id="@+id/text_input_layout_password"
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:textColorHint="@color/yourColor"
        Android:theme="@style/TextLabelLogin"
        app:hintTextAppearance="@style/TextAppearance.App.TextInputLayout"
        app:passwordToggleEnabled="true"
        app:passwordToggleTint="@color/yourColor"
        app:passwordToggleDrawable="@drawable/show_password_selector">

        <EditText
            Android:id="@+id/etPassword"
            Android:layout_width="match_parent"
            Android:layout_height="wrap_content"
            Android:background="@drawable/bottom_line_shape"
            Android:hint="@string/password"
            Android:textColorHint="@color/yourColor"
            Android:inputType="textPassword"
            Android:textColor="@color/yourColor"/>
    </Android.support.design.widget.TextInputLayout>

show_password_selector.xmlは以下のとおりです。

<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item Android:drawable="@drawable/ic_hide_password" Android:state_checked="true" />
<item Android:drawable="@drawable/ic_show_password" /></selector>

それがすべてに役立つことを願っています。

3
Zahidul
**Add Dependency**

compile 'com.Android.support:design:25.0.1'
    compile 'com.Android.support:support-v4:25.0.1'
    compile 'com.Android.support:appcompat-v7:25.0.1'
    compile 'com.Android.support:support-vector-drawable:25.0.1'

  <Android.support.design.widget.TextInputLayout
        Android:id="@+id/layout_password"
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:layout_below="@id/layout_email"
        Android:textColorHint="@color/colorHint"

app:passwordToggleEnabled = "true">

        <EditText
            Android:id="@+id/editTextPassword"
            Android:layout_width="match_parent"
            Android:layout_height="wrap_content"
            Android:layout_marginTop="45dp"
            Android:hint="@string/hint_password"
            Android:inputType="textPassword"
            Android:textColor="@color/textColor" />
    </Android.support.design.widget.TextInputLayout>
1
Keshav Gera
1.create a xml layout...I have created in my way
<FrameLayout
                    Android:layout_width="match_parent"
                    Android:layout_height="@dimen/_50dp"
                    Android:layout_marginTop="@dimen/_15dp">

                    <Android.support.v7.widget.AppCompatEditText
                        Android:id="@+id/etCurrentPassword"
                        Android:layout_width="match_parent"
                        Android:layout_height="match_parent"
                        Android:background="@drawable/drawable_edit_text_2"
                        Android:fontFamily="@font/poppins"
                        Android:hint="@string/old_password"
                        Android:inputType="textPassword"
                        Android:padding="@dimen/_10dp" />

                    <Android.support.v7.widget.AppCompatImageView
                        Android:id="@+id/imgShowPassword1"
                        Android:layout_width="@dimen/_50dp"
                        Android:layout_height="@dimen/_50dp"
                        Android:layout_gravity="end|center_vertical"
                        Android:layout_marginRight="@dimen/_10sp"
                        Android:padding="@dimen/_12dp"
                        Android:tint="@Android:color/darker_gray"
                        app:srcCompat="@drawable/ic_eye" />
                </FrameLayout>

2.In activity class: call the method with the mathing parameters
showORhidePass(view,etRetypePassword,showPassword3 = !showPassword3);

void showORhidePass(AppCompatImageView imageView, AppCompatEditText editText, Boolean save){

        if (TextUtils.isEmpty(editText.getText())){
            return;
        }

        if (save){
            editText.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
            editText.setSelection(editText.length());
            imageView.setColorFilter(ContextCompat.getColor(requireContext(), Android.R.color.darker_gray));
        }else{
            editText.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);
            editText.setSelection(editText.length());
            imageView.setColorFilter(ContextCompat.getColor(requireContext(), R.color.colorPrimary));
        }

    }
0
mainak

Xmlで、TextInputLayoutImageviewを使用してRelativeLayoutを作成します

_ <RelativeLayout
            Android:id="@+id/relative"
            Android:layout_width="match_parent"
            Android:layout_height="wrap_content"
            Android:layout_below="@+id/relativeone"
            Android:layout_marginLeft="16dp"
            Android:layout_marginRight="16dp"
            Android:orientation="horizontal"
            Android:weightSum="5">

            <Android.support.design.widget.TextInputLayout>
                Android:id="@+id/layoutTextInput"
                Android:layout_width="match_parent"
                Android:layout_height="wrap_content"
                Android:layout_alignParentLeft="true"
                Android:layout_alignParentStart="true"
                Android:layout_gravity="center_vertical"
                Android:layout_weight="5"
                Android:gravity="center_vertical"
                Android:hint="Password"
                Android:paddingTop="4dp"
                Android:textColorHint="#3f3f3f">

                <EditText
                    Android:id="@+id/passwordedit"
                    Android:layout_width="match_parent"
                    Android:layout_height="60dp"
                    Android:drawableLeft="@mipmap/bluelocked"
                    Android:drawablePadding="13dp"
                    Android:gravity="center_vertical"
                    Android:inputType="textPassword"
                    Android:paddingLeft="15dp"
                    Android:textColor="#3f3f3f"
                    Android:textColorHint="#3f3f3f"
                    Android:textSize="13sp" />

            </Android.support.design.widget.TextInputLayout>

            <ImageView
                Android:id="@+id/imagepassword"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                Android:layout_alignParentBottom="true"
                Android:layout_alignParentRight="true"
                Android:layout_gravity="center_vertical"
                Android:paddingBottom="20dp"
                Android:paddingRight="10dp"
                Android:src="@mipmap/IMAGEYOUWANT" />

        </RelativeLayout>
_

また、アクティビティにパスワードを表示および非表示にするonTouch()メソッドを追加します。

_    ImageView imagepass = (ImageView) findViewById(R.id.imagepassword);
    imagepass .setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View view, MotionEvent motionEvent) {

            switch (motionEvent.getAction()) {
                case MotionEvent.ACTION_DOWN:
                    editpass.setInputType(InputType.TYPE_CLASS_TEXT);
                    break;
                case MotionEvent.ACTION_UP:
                    editpass.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
                    break;
            }
            return true;
        }
    });
_
0
Haris ali

テキストを使用して実装します。つまり、「表示」と「非表示」です

textViewShowPassword.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (textViewShowPassword.getText().toString().equalsIgnoreCase("Show")) {
                editTextPassword.setTransformationMethod(HideReturnsTransformationMethod.getInstance());
                textViewShowPassword.setText("Hide");
                editTextPassword.setSelection(editTextPassword.getText().length());
            } else {
                textViewShowPassword.setText("Show");
                editTextPassword.setTransformationMethod(new PasswordTransformationMethod());
                editTextPassword.setSelection(editTextPassword.getText().length());
            }

        }
    });

このヘルプがあなたに役立つことを願っています.. !!

0
RoHiT