ユーザーが検索の外に触れていることを検出する方法を知る必要があります。再現する手順:
検索アイコンをクリックします。これにより、標準の検索ダイアログが表示されます。検索ダイアログの外をタッチします。これを解読する必要がありますか?なんで?検索中に置き換えられるヘッダーがあるためです。検索中は非表示にしますが、検索外の場合は他のヘッダーを復元する必要があります。では、検索ダイアログ以外のアクションを検出するにはどうすればよいですか?
TouchListener
全体に a を追加し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() メソッドを実装しました。create では、ServiceManager を使用してアクティビティを OnDismiss リスナーとして登録しました。それは正常に動作します。