如何在android中的编辑文本中创建keylistener?

时间:2016-06-08 06:12:13

标签: android

当我输入值时,我有一个名为密码的编辑文本,然后按密码编辑文本完成清除焦点,当我按回设备时,它不会从密码编辑文本中丢失焦点。

代码

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;
        }
    });

2 个答案:

答案 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"/>