¿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
- Error "Debe proporcionar el atributo de altura"
- Haga clic en un elemento de la lista RecyclerView
- Uso de ImageView como fondo para un diseño de Android
- ¿Cuál es una forma razonable de hacer este diseño?
- Disposición de respuesta de Android
<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
- Margen de botón personalizado de Android
- LinearLayout no llena tablerow incluso la anchura fill_parent se llama
- Error: no se puede encontrar la variable de símbolo abc_ic_ab_back_mtrl_am_alpha
- Mostrar texto dinámico en una vista de Android
- Cómo aplicar imágenes de paisaje a gran escala
- Cambiar el color FAB con efecto de ondulación
- Cómo manejar el evento de clic en cada celda de un diseño de tabla
- Crear visualizador de espectro de audio android app
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
- Android Marshmallow – cómo saber "Nunca preguntar de nuevo" se comprueba antes
- "FirebaseError: Se proporcionan credenciales de autenticación no válidas" al configurar el inicio de sesión de Google en Android