1. 程式人生 > >Android Button按鈕點選兩次之後,才執行點選事件的操作。

Android Button按鈕點選兩次之後,才執行點選事件的操作。

    在我的專案裡有個頁面同時存在 一個EditText和一個Button。如圖。


由於每次進入這個頁面都彈出軟鍵盤,所以我在這個提交訂單頁面的AndroidManifest.xml中聲明瞭一句

android:windowSoftInputMode="stateHidden|stateUnchanged"

來使軟鍵盤不自動彈出

這時出現了一個問題—— 跳轉到這個頁面之後需要按兩次提交訂單 才能執行click操作 查了一下原因 是因為我沒有理解focusableInTouchMode跟focusable的區別。

那麼focusableInTouchMode這個屬性跟focusable有什麼區別呢?

下邊是我搜索到的講解,講的很清楚我直接轉載了.

要理解這個屬性,首先你得知道,Android不是隻面向手機的,它還有可能被安裝在電視等非觸控輸入裝置上.即使是在手機上,目前很多手機也都支援鍵盤輸入了.focusable這種屬性,更多的是為了解決非觸控輸入的,因為你用遙控器或鍵盤點選控制元件,就必然要涉及到焦點的問題,只有可以獲得焦點的控制元件才能響應鍵盤或者遙控器或者軌跡球的確定事件.然後再反過來看focusableInTouchMode.這個屬性的意思一如字面所述,就是在進入觸控輸入模式後,該控制元件是否還有獲得焦點的能力.可以簡單的理解為,使用者一旦開始通過點選螢幕的方式輸入,手機就進入了"touch mode".
focusableInTouchMode這種屬性,多半是設給EditText這種即使在TouchMode下,依然需要獲取焦點的控制元件.(請自行想下EditText為什麼在touch mode下也需要焦點).比如Button之類的控制元件,在touch mode下,就已經沒有獲取焦點的必要了. ok,那麼我在我的Button中加上這麼一行程式碼就好了。