密码可见性切换没有文本输入布局的安卓



我在下面的xml文件中有2个编辑文本,我手动尝试了可绘制对象中的图像,但没有运气 我该怎么做?

顺便说一句,我正在使用最新的安卓X库。

我对textInputLayout没有任何问题,但我的观点正在改变,我无法解决它。

如果任何专家可以做到这一点,我将不胜感激。

法典:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="?attr/backgroundcolor"
    android:orientation="vertical"
    tools:context="com.tekitsolutions.remindme.Activity.CreatePasswordActivity">
    <com.google.android.material.appbar.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="?attr/toolbarcolor">
        <androidx.appcompat.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="?attr/toolbarcolor"
            android:minHeight="?attr/actionBarSize"
            app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
            app:title="@string/title_add_reminder" />
    </com.google.android.material.appbar.AppBarLayout>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="?attr/backgroundcolor"
        android:gravity="center"
        android:orientation="vertical">
        <ScrollView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@id/toolbar"
            android:background="?attr/backgroundcolor">
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical"
                android:padding="15dp">
                <LinearLayout
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center"
                    android:layout_marginBottom="22dp"
                    android:gravity="center"
                    android:orientation="horizontal">
                    <androidx.cardview.widget.CardView
                        android:id="@+id/card_lock"
                        android:layout_width="80dp"
                        android:layout_height="80dp"
                        android:layout_marginRight="15dp"
                        android:elevation="12dp"
                        android:innerRadius="0dp"
                        android:shape="ring"
                        android:thicknessRatio="1.9"
                        app:cardBackgroundColor="?attr/backgroundcolor"
                        app:cardCornerRadius="40dp">
                        <ImageView
                            android:id="@+id/iv_lock"
                            android:layout_width="match_parent"
                            android:layout_height="50dp"
                            android:layout_alignParentTop="true"
                            android:layout_centerHorizontal="true"
                            android:layout_gravity="center"
                            android:gravity="center"
                            android:tint="?attr/iconcolor"
                            app:srcCompat="@drawable/ic_lock_black_24dp"></ImageView>
                    </androidx.cardview.widget.CardView>
                    <androidx.cardview.widget.CardView
                        android:id="@+id/card_success"
                        android:layout_width="80dp"
                        android:layout_height="80dp"
                        android:layout_marginRight="15dp"
                        android:elevation="12dp"
                        android:innerRadius="0dp"
                        android:shape="ring"
                        android:thicknessRatio="1.9"
                        android:visibility="gone"
                        app:cardBackgroundColor="?attr/backgroundcolor"
                        app:cardCornerRadius="40dp">
                        <ImageView
                            android:id="@+id/iv_success"
                            android:layout_width="match_parent"
                            android:layout_height="50dp"
                            android:layout_alignParentTop="true"
                            android:layout_centerHorizontal="true"
                            android:layout_gravity="center"
                            android:gravity="center"
                            android:tint="?attr/iconcolor"
                            app:srcCompat="@drawable/ic_check_black_24dp"></ImageView>
                    </androidx.cardview.widget.CardView>
                </LinearLayout>
                <RelativeLayout
                    android:id="@+id/layout_pwd"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginBottom="16dp"
                    android:background="@drawable/bg_card_layout_details"
                    android:padding="8dp"
                    android:visibility="gone">
                    <ImageView
                        android:id="@+id/image_old"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_alignParentLeft="true"
                        android:layout_marginRight="8dp"
                        android:tint="?attr/iconcolor"
                        app:srcCompat="@drawable/ic_lock_outline_black_24dp" />
                    <EditText
                        android:id="@+id/old_pwd"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_alignParentRight="true"
                        android:layout_toRightOf="@id/image_old"
                        android:background="@android:color/transparent"
                        android:hint="@string/create_your_4_digit_passcode"
                        android:imeOptions="actionNext"
                        android:inputType="numberPassword"
                        android:maxLength="4"
                        android:textAllCaps="true"
                        android:textColor="?attr/textcolor"
                        android:textSize="16sp" />
                </RelativeLayout>
                <RelativeLayout
                    android:id="@+id/layout_alias"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:background="@drawable/bg_card_layout_details"
                    android:padding="8dp">
                    <ImageView
                        android:id="@+id/iv_mobile_no"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_alignParentLeft="true"
                        android:layout_marginRight="8dp"
                        android:tint="?attr/iconcolor"
                        app:srcCompat="@drawable/ic_lock_outline_black_24dp" />
                    <EditText
                        android:id="@+id/etCreatePassword"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_alignParentRight="true"
                        android:layout_toRightOf="@id/iv_mobile_no"
                        android:background="@android:color/transparent"
                        android:hint="@string/create_your_4_digit_passcode"
                        android:imeOptions="actionNext"
                        android:inputType="numberPassword"
                        android:maxLength="4"
                        android:textAllCaps="true"
                        android:textColor="?attr/textcolor"
                        android:textSize="16sp" />
                </RelativeLayout>
                <!--<include
                    android:id="@+id/tv_error_passcode"
                    layout="@layout/row_error_textview2" />-->
                <TextView
                    android:id="@+id/tv_error_passcode"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="16dp"
                    android:orientation="vertical"
                    android:textColor="@color/colorRed"
                    android:visibility="gone"></TextView>

                <RelativeLayout
                    android:id="@+id/layout_url_link"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="16dp"
                    android:background="@drawable/bg_card_layout_details"
                    android:padding="8dp">
                    <ImageView
                        android:id="@+id/iv_url_link"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_alignParentLeft="true"
                        android:layout_marginRight="8dp"
                        android:tint="?attr/iconcolor"
                        app:srcCompat="@drawable/ic_lock_outline_black_24dp" />
                    <EditText
                        android:id="@+id/etConfirmPassword"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_alignParentRight="true"
                        android:layout_toRightOf="@id/iv_url_link"
                        android:background="@android:color/transparent"
                        android:hint="@string/confirm_pass"
                        android:imeOptions="actionDone"
                        android:inputType="numberPassword"
                        android:maxLength="4"
                        android:textColor="?attr/textcolor"
                        android:textSize="16sp" />
                </RelativeLayout>
                <!--    <include
                        android:id="@+id/tv_error_confm_passcode"
                        layout="@layout/row_error_textview2" />-->
                <TextView
                    android:id="@+id/tv_error_confm_passcode"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="16dp"
                    android:orientation="vertical"
                    android:textColor="@color/colorRed"
                    android:visibility="gone"></TextView>

                <Button
                    android:id="@+id/btnConfirm"
                    android:layout_width="match_parent"
                    android:layout_height="40dp"
                    android:layout_marginTop="16dp"
                    android:background="@drawable/bg_btn_color"
                    android:imeOptions="actionDone"
                    android:text="@string/button_confirm"
                    android:textColor="@color/colorWhite" />

            </LinearLayout>
        </ScrollView>
    </LinearLayout>

</LinearLayout>

EditText使用以下代码设置自定义drawable图标。

        <EditText
             android:id="@+id/old_pwd"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:layout_alignParentRight="true"
             android:layout_toRightOf="@id/image_old"
             android:background="@android:color/transparent"                       
             android:hint="@string/create_your_4_digit_passcode"
             android:imeOptions="actionNext"
             android:inputType="numberPassword"
             android:drawableRight="@mipmap/icn_eye"
             android:maxLength="4"
             android:textAllCaps="true"
             android:textColor="?attr/textcolor"
             android:textSize="16sp" />

现在,您必须将侦听器touch设置为EditText

@OnTouch(R.id.old_pwd)
boolean toChangePasswordText(View v, MotionEvent event) {
    final int DRAWABLE_RIGHT = 2;
    if (event.getAction() == MotionEvent.ACTION_UP) {
        if (event.getRawX() >= (old_pwd.getRight() - old_pwd.getCompoundDrawables()[DRAWABLE_RIGHT].getBounds().width())) {
            if (old_pwd.getInputType() == InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD) {
                old_pwd.setInputType(InputType.TYPE_CLASS_TEXT |
                        InputType.TYPE_TEXT_VARIATION_PASSWORD);
                old_pwd.setCompoundDrawablesWithIntrinsicBounds(null, null, context.getResources().getDrawable(R.mipmap.icn_eye), null);
                old_pwd.setSelection(old_pwd.getText().length());
            } else {
                old_pwd.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);
                old_pwd.setCompoundDrawablesWithIntrinsicBounds(null, null, context.getResources().getDrawable(R.mipmap.icn_eyecross), null);
                old_pwd.setSelection(old_pwd.getText().length());
            }                
            return true;
        }
    }
    return false;
}

最新更新