android edittext inputType:textpassword 在某些设备上无法使用 intputType:actionDone
android edittext inputType:textpassword not working with intputType:actionDone on some devices
我对使用 EditText
的 inputType
并不陌生,但现在我在使用 android:imeOptions="actionDone"
的同时设置 android:inputType="textPassword"
时遇到问题
使用的设备是:LG G4 Android v6.0
这是我的代码:
<android.support.design.widget.TextInputLayout
android:id="@+id/input_layout_password"
style="@style/TextInputLayoutLoginTheme"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/default_padding_2"
app:passwordToggleDrawable="@drawable/ic_password_visibility_18dp_selector"
app:passwordToggleTint="@color/white">
<com.cashu.app.ui.widgets.CustomEditText
android:id="@+id/et_activity_login_password"
style="@style/EditTextPasswordTheme"
android:layout_width="@dimen/edittext_width"
android:layout_height="wrap_content"
android:ems="12"
android:gravity="center_vertical"
android:hint="@string/activity_consumer_login_password_hint"
android:imeOptions="actionDone"
android:inputType="textPassword"
android:maxLines="1"
android:textColor="@color/white"
android:textSize="@dimen/font_size_small" />
</android.support.design.widget.TextInputLayout>
我的代码 EidtText
:
mEtPassword.setOnEditorActionListener(new EditText.OnEditorActionListener() {
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if ((actionId & EditorInfo.IME_MASK_ACTION) > 0 || actionId == EditorInfo.IME_NULL) {
login();
return true;
}
return false;
}
});
mEtPassword.addTextChangedListener(new LoginTextWatcher(mEtPassword));
这在我的 LG G4 设备上不起作用,而且 onEditorAction
方法也未被调用!
我尝试了很多搜索并使用了其他人的解决方案,但它似乎是制造商问题!
试试这个方法
edittext.setTransformationMethod(PasswordTransformationMethod.getInstance());
试试这个来检测回车键
mEtPassword.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (event.getAction() != KeyEvent.ACTION_DOWN)
// return false;
if (keyCode == KeyEvent.KEYCODE_ENTER) {
//your necessary codes...
}
return false;
}
});
终于想通了
我将这个 xml 属性 添加到我的 EditText
:
android:singleLine="true"
我知道它已被弃用,但是 android:maxLines="1"
虽然它是 singleLine
的替代品,但无法正常工作。
我也删除了这个:
android:imeOptions="actionDone"
谢谢你们的帮助。
我对使用 EditText
的 inputType
并不陌生,但现在我在使用 android:imeOptions="actionDone"
android:inputType="textPassword"
时遇到问题
使用的设备是:LG G4 Android v6.0
这是我的代码:
<android.support.design.widget.TextInputLayout
android:id="@+id/input_layout_password"
style="@style/TextInputLayoutLoginTheme"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/default_padding_2"
app:passwordToggleDrawable="@drawable/ic_password_visibility_18dp_selector"
app:passwordToggleTint="@color/white">
<com.cashu.app.ui.widgets.CustomEditText
android:id="@+id/et_activity_login_password"
style="@style/EditTextPasswordTheme"
android:layout_width="@dimen/edittext_width"
android:layout_height="wrap_content"
android:ems="12"
android:gravity="center_vertical"
android:hint="@string/activity_consumer_login_password_hint"
android:imeOptions="actionDone"
android:inputType="textPassword"
android:maxLines="1"
android:textColor="@color/white"
android:textSize="@dimen/font_size_small" />
</android.support.design.widget.TextInputLayout>
我的代码 EidtText
:
mEtPassword.setOnEditorActionListener(new EditText.OnEditorActionListener() {
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if ((actionId & EditorInfo.IME_MASK_ACTION) > 0 || actionId == EditorInfo.IME_NULL) {
login();
return true;
}
return false;
}
});
mEtPassword.addTextChangedListener(new LoginTextWatcher(mEtPassword));
这在我的 LG G4 设备上不起作用,而且 onEditorAction
方法也未被调用!
我尝试了很多搜索并使用了其他人的解决方案,但它似乎是制造商问题!
试试这个方法
edittext.setTransformationMethod(PasswordTransformationMethod.getInstance());
试试这个来检测回车键
mEtPassword.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (event.getAction() != KeyEvent.ACTION_DOWN)
// return false;
if (keyCode == KeyEvent.KEYCODE_ENTER) {
//your necessary codes...
}
return false;
}
});
终于想通了
我将这个 xml 属性 添加到我的 EditText
:
android:singleLine="true"
我知道它已被弃用,但是 android:maxLines="1"
虽然它是 singleLine
的替代品,但无法正常工作。
我也删除了这个:
android:imeOptions="actionDone"
谢谢你们的帮助。