Java 如何在android中定位passwordToggleDrawable?
以下链接显示了主要问题() 如您所见,密码可见性图标和验证图标(动态显示时)之间存在重叠。我想知道一个简单的方法来定位图标,使他们将一起工作,这是可能的吗 密码切换Java 如何在android中定位passwordToggleDrawable?,java,android,xml,passwords,android-drawable,Java,Android,Xml,Passwords,Android Drawable,以下链接显示了主要问题() 如您所见,密码可见性图标和验证图标(动态显示时)之间存在重叠。我想知道一个简单的方法来定位图标,使他们将一起工作,这是可能的吗 密码切换 <com.google.android.material.textfield.TextInputLayout android:id="@+id/textInputLayoutWifiPW" android:layout_width="600dp" android:layo
<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);
}
}
private void validateWIFI(最终上下文){
如果(SSID.length()==0){
dialogButtonTrueOrFalse(mDialog,false);
setError(context.getString(R.string.error_SSID_empty));
}else if(PWD.length()>0&&PWD.length()<8){
dialogButtonTrueOrFalse(mDialog,false);
setError(context.getString(R.string.error_PWD_length));
}否则{
dialogButtonTrueOrFalse(mDialog,true);
}
}
public void dialogButtonTrueOrFalse(AlertDialogMDialog,布尔按钮){
如果(按钮){
mDialog.getButton(AlertDialog.BUTTON_正值)。可设置可点击(true);
mDialog.getButton(AlertDialog.BUTTON_正值)。setEnabled(true);
}否则如果(!按钮){
mDialog.getButton(AlertDialog.BUTTON_正值)。可设置可点击(false);
mDialog.getButton(AlertDialog.BUTTON_正数)。setEnabled(false);
}
}
对于可绘制的更改,创建一个选择器,如下所示
密码\u切换\u 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>
我建议您将错误设置为CommonTextInputItemText,这样更好 在java代码中设置错误TextInputLayout而不是CommonTextInputText
TextInputLayout passwordInputLayout =findViewById(R.id.textInputLayoutWifiPW);
passwordInputLayout.setError("your textError");
您可以使用此来了解中的
您还可以将ErrorStyle设置为edittext并为其添加边距
yourEditText.setError(Html.fromHtml("<//todo...'>this is the error</font>"));
yourEditText.setError(Html.fromHtml(“
TextInputLayout passwordInputLayout =findViewById(R.id.textInputLayoutWifiPW);
passwordInputLayout.setError("your textError");
yourEditText.setError(Html.fromHtml("<//todo...'>this is the error</font>"));