I had the same problem and end up with the following solution: custom SearchView + OnQueryTextListener.onQueryTextChange
Custom SearchView:
public class MySearchView extends SearchView {
private boolean expanded;
public MySearchView(Context context) {
    super(context);
}
@Override
public void onActionViewExpanded() {
    super.onActionViewExpanded();
    expanded = true;
}
@Override
public void onActionViewCollapsed() {
    super.onActionViewCollapsed();
    expanded = false;
}
public boolean isExpanded() {
    return expanded;
}
}
Creating action and setting callback: 
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    super.onCreateOptionsMenu(menu, inflater);
    searchAction = menu.add(0, SEARCH_ACTION_ID, 0 , getString(R.string.action_search));
    searchAction.setShowAsAction(SHOW_AS_ACTION_ALWAYS | SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW);       
    searchView = new MySearchView(getSherlockActivity());
    searchView.setOnQueryTextListener(searchQueryListener);
    searchView.setIconifiedByDefault(true);
    searchAction.setActionView(searchView);
}
And last the listener:
private OnQueryTextListener searchQueryListener = new OnQueryTextListener() {
    @Override
    public boolean onQueryTextSubmit(String query) {
        search(query);
        return true;
    }
    @Override
    public boolean onQueryTextChange(String newText) {
        if (searchView.isExpanded() && TextUtils.isEmpty(newText)) {
            search("");
        }
        return true;
    }
    public void search(String query) {
        // reset loader, swap cursor, etc.
    }
};
Tested on ABS 4.3.