我需要知道如何检测用户触摸外部搜索。重现步骤:
点击搜索图标。这会打开标准搜索对话框。触摸外部搜索对话框。我需要detech吗?为什么?因为我有一个在搜索过程中被替换的标题。我在搜索过程中隐藏它,但在外部搜索时我需要恢复我的其他标题。那么如何检测搜索对话框之外的操作呢?
添加一个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;
}
});
你只需要确定你的搜索框所在的坐标,然后你就可以应用上面的逻辑了。
有一个可以使用 SearchManager 注册的 onDismiss 侦听器。这会告诉您搜索对话框何时关闭。所以我在我的活动中实现了 onDismiss() 方法。在创建中,我使用 ServiceManager 将我的活动注册为 OnDismiss 侦听器。它工作正常。