Android – vista de búsqueda con función completa automática dentro de la barra de acción
Quiero crear una aplicación que tenga una barra de acción sherlock y una vista de búsqueda dentro de ella. Sin embargo, quiero que esta vista de búsqueda tenga la función de autocompletar como lo que tiene el autocompleteTextView. ¿Hay alguna implementación sencilla para hacer eso usando solo searchview? O debo utilizar autocompleteTextView dentro de la barra de acción para hacer esto? He encontrado varios puestos por ahí, pero ninguno de ellos me está ayudando. Esos mensajes hablan sólo de crear un autocompleteTextView, pero quiero que la vista de búsqueda tenga esta funcionalidad. ¿Alguna idea de cómo se puede hacer?
- Android SearchView Ocultar el teclado al iniciar
- Android: haga que la barra de búsqueda completa pueda hacer clic
- OnActionExpandListener en menuitem no funciona. ¿Como arreglarlo?
- No se puede ocultar el teclado virtual de SearchView iconfiedbydefault (false)
- Android SearchView onclick
- Crear ContentProvider asincrónico para Actionbar SearchView
- ¿Cómo implementar WhatsApp como el diseño de materiales SearchView?
- onQueryTextChange activado después del restablecimiento de la aplicación
- Ejemplo de android.support.v4.widget.SearchViewCompat?
- Obtención de excepción de conversión de clase durante el uso de android.support.v7.widget.SearchView
- Cómo utilizar onQueryTextChange con muchos fragmentos
- NoSuchMethodError al llamar a MenuItem.collapseActionView
- Problemas de procesamiento No se pudo resolver resource @ id / search_edit_frame
Para esto tengo crear un diseño con AutoCompleteTextView
y agregarlo en ActionBar
su Custom layout in ActionBar.
llamada Custom layout in ActionBar.
Después de que tengo crear adaptador con android.R.layout.simple_dropdown_item_1line
. AutoCompleteTextView
en AutoCompleteTextView
.
Ver abajo Código:
package com.example.testapp; import android.annotation.TargetApi; import android.app.ActionBar; import android.app.Activity; import android.content.Context; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.widget.ArrayAdapter; import android.widget.AutoCompleteTextView; @TargetApi(11) public class MainActivity extends Activity { private static final String[] COUNTRIES = new String[] { "Belgium", "France", "France_", "Italy", "Germany", "Spain" }; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ActionBar actionBar = getActionBar(); actionBar.setDisplayHomeAsUpEnabled(true); actionBar.setDisplayShowCustomEnabled(true); // actionBar.setDisplayShowTitleEnabled(false); // actionBar.setIcon(R.drawable.ic_action_search); LayoutInflater inflator = (LayoutInflater) this .getSystemService(Context.LAYOUT_INFLATER_SERVICE); View v = inflator.inflate(R.layout.actionbar, null); actionBar.setCustomView(v); ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line, COUNTRIES); AutoCompleteTextView textView = (AutoCompleteTextView) v .findViewById(R.id.editText1); textView.setAdapter(adapter); } }
Su diseño:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:gravity="center" > <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Action Bar:" android:textAppearance="?android:attr/textAppearanceMedium" android:textColor="#FFFFFF" /> <AutoCompleteTextView android:id="@+id/editText1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:ems="10" android:imeOptions="actionSearch" android:inputType="textAutoComplete|textAutoCorrect" android:textColor="#FFFFFF" > <requestFocus /> </AutoCompleteTextView> </LinearLayout>
Para más detalles verifique este articals: uno , dos y tres
¡La mejor de las suertes!
Tengo una manera simple de hacer esto sin usar un autocomplete textview, apenas ponga un adaptador simple de la lista que contenga un ArrayList (itemArrayList) de artículos, sugerir con la opinión de la búsqueda. Fije el adaptador a su SearchAutoComplete y la característica auto completa trabajará abajo es Mi código. Con esto, usted no tiene que usar un diseño adicional.
@Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); MenuItem searchItem = menu.findItem(R.id.search); SearchView mSearchView = (SearchView) MenuItemCompat.getActionView(searchItem); SearchAutoComplete searchAutoComplete = (SearchAutoComplete) mSearchView.findViewById(android.support.v7.appcompat.R.id.search_src_text); searchAutoComplete.setTextColor(Color.WHITE); ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line, itemArrayList); searchAutoComplete.setAdapter(adapter); SearchManager searchManager = (SearchManager) getSystemService(this.SEARCH_SERVICE); mSearchView.setSearchableInfo( searchManager.getSearchableInfo(getComponentName())); return true; }
Al hacer clic en el elemento sugerido, el elemento aparecerá en la vista de búsqueda, por lo que agregue el código siguiente justo después de configurar el adaptador para buscarAutoCompletar dentro del método onCreateOptionmenu (…).
@Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { // TODO Auto-generated method stub String searchString=(String)parent.getItemAtPosition(position); searchAutoComplete.setText(""+searchString); Toast.makeText(MainActivity.this, "you clicked "+searchString, Toast.LENGTH_LONG).show(); } });
También puede ver el código completo en este enlace
- Cabecera de clics común para todas las actividades en Android
- No se puede compilar, No se puede ejecutar dex, no se puede combinar, instrucción no jumbo