【问题标题】:How do I position a passwordToggleDrawable in android?如何在android中定位passwordToggleDrawable?
【发布时间】:2019-07-26 07:43:09
【问题描述】:

以下链接显示了主要问题 (Link) 如您所见,密码可见性图标和验证图标(当它动态出现时)之间存在重叠。我想知道一种简单的方法来定位图标以便它们一起工作,这可能吗?

密码切换

    <com.google.android.material.textfield.TextInputLayout
        android:id="@+id/textInputLayoutWifiPW"
        android:layout_width="600dp"
        android:layout_height="wrap_content"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/textInputLayoutWifiSSID"
        app:passwordToggleDrawable="@drawable/passwordtoggle"
        app:passwordToggleEnabled="true"
        app:passwordToggleTint="@color/md_blue_500">

        <com.google.android.material.textfield.TextInputEditText
            android:id="@+id/password"
            android:layout_width="568dp"
            android:layout_height="wrap_content"
            android:layout_marginStart="16dp"
            android:layout_marginLeft="16dp"
            android:layout_marginTop="16dp"
            android:layout_marginEnd="8dp"
            android:layout_marginRight="8dp"
            android:layout_marginBottom="16dp"

            android:fontFamily="sans-serif"
            android:hint="@string/password"
            android:inputType="textPassword"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/SSID" />

验证方法

private void validateWIFI(final Context context) {
        if (SSID.length() == 0 ) {
            dialogButtonTrueOrFalse(mDialog, false);
            SSID.setError(context.getString(R.string.error_ssid_empty));
        }else if (PWD.length() > 0 && PWD.length() < 8) {
            dialogButtonTrueOrFalse(mDialog, false);
            PWD.setError(context.getString(R.string.error_pwd_length));
        }else {
            dialogButtonTrueOrFalse(mDialog,true);
        }
    }
    public void dialogButtonTrueOrFalse(AlertDialog mDialog, Boolean button){
        if (button){
            mDialog.getButton(AlertDialog.BUTTON_POSITIVE).setClickable(true);
            mDialog.getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(true);
        }else if (!button){
            mDialog.getButton(AlertDialog.BUTTON_POSITIVE).setClickable(false);
            mDialog.getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(false);
        }
    }

【问题讨论】:

    标签: java android xml passwords android-drawable


    【解决方案1】:

    我认为您将 setError 设置为 CommonTextInputEditText 更好 你在你的java代码中设置了Error TextInputLayout而不是你的CommonTextInputEditText

    TextInputLayout  passwordInputLayout =findViewById(R.id.textInputLayoutWifiPW);
    passwordInputLayout.setError("your textError");
    

    你可以使用这个refrence来了解

    您也可以将ErrorStyle 设置为您的编辑文本并为其添加边距

    yourEditText.setError(Html.fromHtml("<//todo...'>this is the error</font>"));
    

    【讨论】:

      【解决方案2】:

      要更改可绘制对象,请创建如下所示的选择器

      password_toggle_drawable.xml

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

      然后分配给 TextInputLayout,如下所示:

      <android.support.design.widget.TextInputLayout
          android:id="@+id/PasswordLayout"
          xmlns:android="http://schemas.android.com/apk/res/android"
          app:passwordToggleEnabled="true"
          **app:passwordToggleDrawable="@drawable/password_toggle_drawable"**
          xmlns:app="http://schemas.android.com/apk/res-auto">
          <android.support.design.widget.CommonTextInputEditText
              android:id="@+id/PasswordEditText"
              android:padding="0dp"
              android:gravity="center"
              android:layout_width="match_parent"
              android:layout_height="wrap_content"
              android:inputType="textPassword"/>
      </android.support.design.widget.TextInputLayout>
      

      对于高度,我在充气后使用以下代码:

      CheckableImageButton text_input_password_toggle = (CheckableImageButton) PasswordLayout().findViewById(android.support.design.R.id.text_input_password_toggle);
      text_input_password_toggle.setMinimumHeight(0);
      PasswordEditText().setMinHeight(0);
      PasswordEditText().setMinimumHeight(0);
      

      【讨论】:

        猜你喜欢
        • 2011-02-23
        • 2014-05-17
        • 1970-01-01
        • 2018-05-01
        • 1970-01-01
        • 2011-03-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多