¿Cómo agregar un SearchView a un cajón de navegación?

Desarrollar un cajón de navegación con vista de lista ampliable, como este

<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent"> <!-- The main content view --> <fragment xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/map" tools:context=".HomeActivity" android:name="com.google.android.gms.maps.SupportMapFragment" /> <!-- The navigation drawer--> <ExpandableListView android:id="@+id/left_drawer" android:layout_width="240dp" android:layout_height="match_parent" android:layout_gravity="start" android:choiceMode="singleChoice" android:divider="@android:color/transparent" android:dividerHeight="0dp" android:background="#111" android:listSelector = "@drawable/selector_list_item"> </ExpandableListView> </android.support.v4.widget.DrawerLayout> 

Quiero agregar un SearchView en el cajón de navegación, así que lo agrego en el ExpandableListView

 <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent"> <!-- The main content view --> <fragment xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/map" tools:context=".HomeActivity" android:name="com.google.android.gms.maps.SupportMapFragment" /> <!-- The navigation drawer--> <ExpandableListView android:id="@+id/left_drawer" android:layout_width="240dp" android:layout_height="match_parent" android:layout_gravity="start" android:choiceMode="singleChoice" android:divider="@android:color/transparent" android:dividerHeight="0dp" android:background="#111" android:listSelector = "@drawable/selector_list_item"> <SearchView android:id="@+id/sv" android:layout_width="wrap_content" android:layout_height="wrap_content"/> </ExpandableListView> </android.support.v4.widget.DrawerLayout> 

Recibí un error

 java.lang.UnsupportedOperationException: addView(View, LayoutParams) is not supported in AdapterView 

Gracias

Creo que usar ActionBar o ToolBar en su Activity para agregar un SearchView sería una buena solución. Puede probar de esta manera:

Primero, agrega SearchView a tu Menu :

 <?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:yourapp="http://schemas.android.com/apk/res-auto" > <item android:id="@+id/action_search" android:title="@string/action_search" android:icon="@drawable/ic_action_search" yourapp:showAsAction="ifRoom|collapseActionView" yourapp:actionViewClass="android.support.v7.widget.SearchView" /> </menu> 

Segundo, agregue acciones en su SearchView :

 @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main_activity_actions, menu); MenuItem searchItem = menu.findItem(R.id.action_search); SearchView searchView = (SearchView) MenuItemCompat.getActionView(searchItem); // Configure the search info and add any event listeners ... return super.onCreateOptionsMenu(menu); } 

Y, si desea saber más detalles, marque aquí .

ExpandableListView no puede tener hijos añadidos – estos son administrados por el adaptador. Puede agregar el SearchView como un encabezado al adaptador si desea que sea parte de la lista. Pero implementar el cajón como un fragmento que contenga tanto SearchView como un ExpandableListView sería una solución mejor.

Puede establecer un fragmento para su cajón de navegación y establecer la vista personalizada en el fragmento,

  <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent"> <!-- The main content view --> <fragment xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/map" tools:context=".HomeActivity" android:name="com.google.android.gms.maps.SupportMapFragment" /> <!-- The navigation drawer--> <fragment android:id="@+id/menufragment" android:name="com.example.fragments.MenuDrawer" android:layout_width="match_parent" android:layout_gravity="start" android:layout_height="match_parent" /> </android.support.v4.widget.DrawerLayout> 

Esto le ayudará a simplificar su estructura de código, y aquí hay un buen tutorial para la lista expandible con la vista de búsqueda que se agrega a su frase de cajón http://www.mysamplecode.com/2012/11/android-expandablelistview-search.html

  • Atributos personalizados para un DialogPreference
  • Diseño horizontal flexible con `layout_weight` y` maxWidth`
  • Android: Visualice TextView en el lado derecho de EditText que está en TextInputLayout
  • ¿Mostrar ProgressBar mientras la imagen está cargando en ImageView?
  • Fondo de azulejos es empujando es View size
  • Teclado suave de Android con botones superpuestos (Captura de pantalla)
  • ScrollView no muestra la parte superior
  • ¿Cómo podemos ocultar incluir diseño de forma programática en Android?
  • Desactivar el enfoque automático al editar el texto
  • Escala Android de imágenes a densidad de pantalla
  • El tamaño de fuente de TextView en la aplicación Android cambia al cambiar el tamaño de la fuente de la configuración nativa
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.