2016-06-08 58 views
-1

我有一個編輯文本命名爲密碼,當我輸入值,並按下完成它清除焦點從密碼編輯文本和當我按下設備時,然後它不損失密碼編輯文本焦點。如何使android中的編輯文本中的keylistener?

代碼

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

我想要當我在密碼輸入值編輯文本和完成後按設備然後它會隱藏軟鍵盤,然後我想要密碼編輯文本清除重點 – John

回答

0

下面寫onBackPressed在活動

@Override 
public void onBackPressed() { 
    if(!m_InputPassword.hasFocus()){ 
     super.onBackPressed(); 
    } 
} 
+0

不工作............... ......... – John

+0

它是片段還是活動? – PankajAndroid

+0

活動我已經定義onbACKpRESS用於從活動 – John

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"/> 
相關問題