Acabo de implementar la v7 AppCompat
biblioteca de soporte, pero MenuItemCompat.getActionView
siempre devuelve nulo en cada versión de Android que probé (4.2.2, 2.3.4 ...)
El SearchView
se muestra en la barra de acción, pero no responde a las acciones táctiles y no se expande para mostrar su, EditText
y es como un simple icono.
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu, menu);
MenuItem searchItem = menu.findItem(R.id.action_search);
SearchView searchView = (SearchView) MenuItemCompat.getActionView(searchItem);
if (searchView != null) {
SearchViewCompat.setOnQueryTextListener(searchView, mOnQueryTextListener);
searchView.setIconifiedByDefault(false);
Log.d(TAG,"SearchView not null");
} else
Log.d(TAG, "SearchView is null");
}
return super.onCreateOptionsMenu(menu);
}
Menu.xml
<?xml version="1.0" encoding="utf-8"?>
<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"
app:showAsAction="always|collapseActionView"
android:icon="@drawable/abc_ic_search"
android:title="@string/action_bar_search"
android:actionViewClass="android.support.v7.widget.SearchView"/>
<item android:id="@+id/action_refresh"
android:icon="@drawable/refresh"
android:title="@string/action_bar_refresh"
app:showAsAction="ifRoom"/>
</menu>
fuente
android.support.v7.widget.SearchView
clase no debe confundirse con la clase 'android.support.v4.widget.SearchViewCompat' (que se conoce como un error común al usar la biblioteca ActionBarCompat)<menu xmlns:app="http://schemas.android.com/apk/res/android" >
pero obtengo un errorAttribute is missing the Android namespace prefix
. ¿Lo entiendes y cómo lo arreglas?