[英]Keyboard not showing up on EditText when return true
所以我在onCreate
中添加了這些行,這樣當我單擊或觸摸 EditText 時,它會執行doSomething
中指定的操作。 問題是,使用如下所示的代碼,執行doSomething
后鍵盤不顯示。 如果我刪除 if 塊中的return true
,那么它可以工作,但我不明白為什么如果包含此行它會失敗。 那么為什么會這樣呢?
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText = (EditText)findViewById(R.id.editText);
editText.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_UP) {
doSomething(editText);
return true;
}
return false;
}
});
}
發生這種情況是因為鍵盤會顯示MotionEvent.ACTION_UP
何時由EditText
本身(不是您的自定義OnTouchListener
)處理,因此您的onTouch
應該return false
通常onTouch
返回的標志通知框架您已經處理了事件 - 當您返回true
時,此事件將不會進一步傳播(因為已經處理,“已使用”)。 如果返回false
則事件仍將傳播到此View
(並在后台處理,請查看特定來源如何),如果View
的默認實現不處理此操作並且也return false
,甚至傳播到其父級
這不是EditText
的情況 - 它正在處理所有事件,就像在第一段中一樣 - ACTION_UP
將顯示鍵盤。 但是在您的第一順序自定義OnTouchListener
中返回true
會阻止這種情況
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.