2012-06-27 63 views

回答

5

不,有沒有辦法讓SearchDialog的應用程序圖標點擊。

但只是爲了好玩,讓我們假設存在着一些哈克的解決辦法,將工作做好。好的,我們已經得到了想要的行爲......但現在我們有兩個問題:

  1. SearchDialog的行爲是不與其他Android設備保持一致。這會減少用戶體驗,因爲用戶希望搜索界面在所有Android設備上都能發揮相同的作用。

  2. 你的應用程序現在利用了內部API,它可以在新的SDK被釋放或可以不保持一致的。對於所有你知道,Android團隊可以從@+id/search_app_iconapp icon's id更改爲@+id/search_home_icon。你劈依賴於內部API ...所以這樣的變化將導致新的設備上運行你的應用程序崩潰(如任何運行時尋找search_app_icon將返回null)。

    此外,像三星和HTC公司都免費,他們發佈他們的新設備,以在公衆面前改變內部API。接下來的三星Galaxy可能會完全重新實施SearchDialog課程,更新其用戶界面/主題等......你永遠無法知道。

所以基本上,你不能......而且你不應該這樣做。


只是因爲我很無聊,這裏的源代碼,使我對我的回答:

  1. 檢查出SearchManager.java的源代碼,並注意SearchManager保持SearchDialog作爲私有實例變量mSearchDialog

  2. 檢查出SearchDialog.java的源代碼,並注意SearchDialog引用的應用程序圖標爲私有實例變量mAppIcon。還要注意的是,SearchDialog通過對findViewById調用初始化變量,如看到here

  3. 查看search_bar.xml的源代碼,並注意默認情況下ImageView未設置爲clickable。由於在公共SDK能夠改變這個View的行爲沒有(方法,有使其可點擊沒有可靠的方法。

+0

爲什麼你不能在對話框中註冊觸摸監聽器,並推斷用戶是否點擊了圖標所在的quandrant? –

+0

你會如何知道圖標的位置?你怎麼知道首先有一個圖標?你怎麼知道這個圖標有多大?你怎麼知道三星或HTC沒有決定一起刪除'SearchDialog'?好吧,那可能是一種壓力......但你知道我的意思嗎?當然,您可以在屏幕的左上角註冊一個觸摸監聽器......但要預測圖標可能顯示的每種可能場景幾乎是不可能的。 –

+0

它也不適用於Google TV和其他沒有觸摸屏的設備:P –

0

我敢肯定,這是不可能做到這一點使用了Android的公共SDK。

我認爲唯一的解決辦法是寫自己的自定義對話框,但我affraid與內置的對話框中你不能做到這一點。

+0

因此註冊一個視圖觸摸listnener是不可能的? –

+0

@ jaumebd,如果你建議他從頭開始重新編寫搜索界面,那麼祝你好運... –

相關問題