当我输入值时,我有一个名为密码的编辑文本,然后按密码编辑文本完成清除焦点,当我按回设备时,它不会从密码编辑文本中丢失焦点。
代码
m_InputPassword.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if (actionId== EditorInfo.IME_ACTION_DONE || actionId==EditorInfo.IME_ACTION_NEXT|| event.getAction()==KeyEvent.KEYCODE_BACK){
m_InputPassword.clearFocus();
}
return false;
}
});
答案 0 :(得分:0)
在活动
下面写下onBackPressed@Override
public void onBackPressed() {
if(!m_InputPassword.hasFocus()){
super.onBackPressed();
}
}
答案 1 :(得分:0)
好的,所以经过研究我来到这个解决方案,让我知道它是否适合你。 首先,您需要实现自定义EditText 并在xml中添加此视图
public class MyEditText extends EditText implements OnClickListener{
public MyEditText(Context context, AttributeSet attrs) {
super(context, attrs);
setOnClickListener(this);
}
public MyEditText(Context context) {
super(context);
setOnClickListener(this);
}
public MyEditText(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
setOnClickListener(this);
}
@Override
public boolean onKeyPreIme(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
setFocusable(false);
hideKeyBoard();
return true;
}
return super.onKeyPreIme(keyCode, event);
}
private void hideKeyBoard()
{
InputMethodManager imm = (InputMethodManager)getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(getWindowToken(), 0);
}
@Override
public void onClick(View v)
{
v.setFocusable(true);
showKeyBoard();
}
private void showKeyBoard()
{
InputMethodManager imm = (InputMethodManager) getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.SHOW_IMPLICIT, 0);
}
}
XML
<com.example.listissue.MyEditText
android:id="@+id/test_text"
android:layout_width="match_parent"
android:text="1234"
android:layout_height="wrap_content"/>