4
是否可以獲取特定視圖(或PopupWindow)的Window對象?如何從InputMethodService獲取窗口?
我的應用程序是一個鍵盤,所以它是一個Service(一個InputMethodService),而不是一個Activity。因此我不能使用Activity.getWindow()。然而,它有視圖,所以它可能也有一個窗口,不是嗎?我如何得到它?
在此先感謝...
是否可以獲取特定視圖(或PopupWindow)的Window對象?如何從InputMethodService獲取窗口?
我的應用程序是一個鍵盤,所以它是一個Service(一個InputMethodService),而不是一個Activity。因此我不能使用Activity.getWindow()。然而,它有視圖,所以它可能也有一個窗口,不是嗎?我如何得到它?
在此先感謝...
我找到了解決辦法:
InputMethodService ims;
...
Dialog dialog = ims.getWindow();
Window window = dialog.getWindow();
或者乾脆:
Window window = ims.getWindow().getWindow();
(此作品與InputMethodService而不一定適用於其他服務)
如何初始化InputMethodService對象'ims'? –
非常好的問題,的確如此。我可以想到兩種可能的方法:(1)使用'View.getWindowToken',然後嘗試從檢索到的'IBinder'界面進入窗口。我不知道它的實現是什麼,所以你可以嘗試使用反射來看看你回來的東西; (2)使用'Context.getSystemService(WINDOW_SERVICE)'獲得WindowManager - 並嘗試從那裏開始。我還沒有嘗試過這兩種方式,因此將其作爲評論發佈,而不是回答。 –
@AleksG:對不起,這個遲到的回覆。我已經嘗試了你的兩個建議,但都沒有成功。謝謝! –