Tolgay Toklar
Tolgay Toklar

Reputation: 4343

Android collapse search button

I can't collapse my search button in actionbar.This is my menu xml

<menu xmlns:android="http://schemas.android.com/apk/res/android" 
      xmlns:app="http://schemas.android.com/apk/res-auto">
      <item android:id="@+id/action_search"
          android:icon="@drawable/ic_action_search"
          android:title="Ara"
          android:showAsAction="always|collapseActionView" 
          app:actionViewClass="android.support.v7.widget.SearchView"/>

</menu>

I am working with this classes in main activity

import io.socket.IOAcknowledge;
import io.socket.IOCallback;
import io.socket.SocketIO;
import io.socket.SocketIOException;

import java.net.MalformedURLException;
import java.util.ArrayList;
import java.util.Hashtable;

import org.json.JSONException;
import org.json.JSONObject;

import android.app.ActionBar;
import android.app.ActionBar.Tab;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.view.ViewPager;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;

import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import com.impact.ribony.adapter.TabsPagerAdapter;
import com.koushikdutta.async.future.Future;
import com.koushikdutta.async.future.FutureCallback;
import com.koushikdutta.ion.Ion;

Menu create method:

public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

I am using min sdk version 14.I am pressing to search button and nothing happens.Why button is not collapsing ?

Upvotes: 1

Views: 222

Answers (1)

Alexander Zhak
Alexander Zhak

Reputation: 9282

You need to implement SearchView.OnQueryTextListener, then

@Override
public boolean onQueryTextSubmit(String query) {
    InputMethodManager imm =
            (InputMethodManager)mActivity.getSystemService(Activity.INPUT_METHOD_SERVICE);
    imm.hideSoftInputFromWindow(searchView.getWindowToken(), 0);
    return true;
}

BTW, SearchView initialization should be performed in onCreateOptionsMenu:

MenuItem searchItem;
SearchView searchView;

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.main, menu);
    searchItem = menu.findItem(R.id.action_search);
    searchView = (SearchView)searchItem.getActionView();
    searchView.setQueryHint(getResources().getString(R.string.{hint})); //if you want a custom hint
    searchView.setOnQueryTextListener(this);
    EditText et = (EditText)searchView.findViewById(searchView.getContext().getResources()
            .getIdentifier("android:id/search_src_text", null, null));
    et.setHintTextColor(getResources().getColor(R.color.{color})); // if you want to change hint color
    et.setFilters(new InputFilter[] { new InputFilter.LengthFilter({max_length}) }); // if you want to set max. text limit
    return true
}

Upvotes: 1

Related Questions