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 declearfocus
declearfocus
.
¿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();
}
});