studio programacion móviles libro desarrollo curso busqueda barra bar aplicaciones android android-layout android-fragments searchview

programacion - Android-Haz clic en la barra de búsqueda completa



manual de programacion android pdf (8)

Estoy usando un elemento de vista de búsqueda en mi fragmento para implementar la función de búsqueda.

<SearchView android:id="@+id/search_bar" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginTop="7dp" android:layout_marginLeft="7dp" android:layout_marginRight="7dp" android:layout_marginBottom="7dp" android:background="@color/white" />

El problema es que solo se puede hacer clic en el ícono de búsqueda. No se puede hacer clic en otra área de la barra de búsqueda. Cuando hago clic en el ícono, solo puedo buscar.

¿Puedes ayudarme, por favor, a hacer clic en toda el área de búsqueda?


agrega esto a tu xml android:iconifiedByDefault="false" mantendrá abierta tu vista de búsqueda.

y para eliminarlo, agregue clearfocus a su objeto de clearfocus de clearfocus .


¿Qué es la media pulsable? ¿Desea activar la búsqueda o simplemente enfocar el área de edición? Si es el primero, solo puede hacer que el icono haga clic en = falso. y haga clic en todo el diseño e implemente un detector de eventos.

<SearchView android:id="@+id/search_bar" android:layout_width="match_parent" android:layout_height="match_parent" android:clickable="true" android:click="onClick" android:layout_marginTop="7dp" android:layout_marginLeft="7dp" android:layout_marginRight="7dp" android:layout_marginBottom="7dp" android:background="@color/white" />

El método onClick debería ser

public void onClick(View v) {   InputMethodManager im = ((InputMethodManager) getSystemService(INPUT_METHOD_SERVICE)); im.showSoftInput(editText, 0); }


El truco no es tanto hacer que se pueda hacer clic en toda el área sino expandirla y luego ocultar el teclado.

Primero, su diseño en el XML está bien, déjelo como está, en su Java, desea tener lo siguiente:

@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main_activity); //Define your Searchview SearchView searchView = (SearchView) findViewById(R.id.search_bar); //Turn iconified to false: searchView.setIconified(false); //The above line will expand it to fit the area as well as throw up the keyboard //To remove the keyboard, but make sure you keep the expanded version: searchView.clearFocus(); }

Lo que esto logra es que expande el teclado a toda la longitud del área, se enfoca en él, lo que permite que se pueda hacer clic en toda el área, y luego se quita el teclado para que se vea al usuario como si fuera capaz de hacer clic en él. campo y abrir un teclado.

Debe cumplir con lo que está buscando.

-Sil


Escriba las líneas de código que figuran a continuación en su archivo Java:

SearchView searchView = (SearchView) findViewById(R.id.searchView); searchView.setQueryHint("Enter your address"); searchView.setIconified(false); searchView.clearFocus();

Después de eso, no olvides escribir android:focusable="true" en tu archivo XML dentro de la etiqueta SearchView .

Por ejemplo:

<SearchView android:id="@+id/searchView" android:layout_width="match_parent" android:layout_height="wrap_content" android:focusable="true" />


Esto se puede hacer simplemente configurando Iconified en falso en OnClick of SearchView.

searchBar.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { searchBar.setIconified(false); } });

Referencia: la respuesta de Eric Lui.

Esperemos que ayude.


Utilizar esta

searchView.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { searchView.onActionViewExpanded(); OR searchView.setIconified(false); } }); searchView.setOnQueryTextFocusChangeListener(new View.OnFocusChangeListener() { @Override public void onFocusChange(View view, boolean b) { if(!b) { if(searchView.getQuery().toString().length() < 1) { searchView.setIconified(true); //close the search editor and make search icon again OR searchView.onActionViewCollapsed(); } searchView.clearFocus(); } } });


searchView.setIconified(false);


search_bar.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { search_bar.onActionViewExpanded(); } });