我需要知道如何檢測用戶觸摸外部搜索。重現步驟:Android:用戶觸摸外部搜索時如何刷新屏幕?
單擊搜索圖標。這帶來了標準的搜索對話框。觸摸外部搜索對話框。我需要檢測這個?爲什麼?因爲我有一個在搜索過程中被替換的標題。我在搜索過程中將其隱藏,但在外部搜索時,我需要恢復其他標題。那麼如何檢測搜索對話框之外的操作?
我需要知道如何檢測用戶觸摸外部搜索。重現步驟:Android:用戶觸摸外部搜索時如何刷新屏幕?
單擊搜索圖標。這帶來了標準的搜索對話框。觸摸外部搜索對話框。我需要檢測這個?爲什麼?因爲我有一個在搜索過程中被替換的標題。我在搜索過程中將其隱藏,但在外部搜索時,我需要恢復其他標題。那麼如何檢測搜索對話框之外的操作?
添加TouchListener
到你的整個View
:
final View touchView = findViewById(R.id.touchView);
touchView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if(event.getX() == x && event.getY() == y) // x and y are within the search box
{
//you clicked inside the search box,do nothing
}
if(event.getX() == outsideSearchBox && event.getY() == outsideSearchBox)
{
//do your stuff
}
return true;
}
});
你只需要確定你的搜索框的座標,那麼你可以申請上述邏輯。
有一個onDismiss偵聽器可以使用SearchManager進行註冊。這會告訴你何時關閉搜索對話框。所以我在我的活動中實現了onDismiss()方法。在創建中,我使用ServiceManager將我的活動註冊爲OnDismiss偵聽器。它工作正常。