2010-08-31 25 views
16

Actualmente estoy implementando un campo de autocompletar utilizando el componente AutocompleteTextView.AutocompleteTextview y CompletionHintView

Estoy tratando de agregar una sugerencia de finalización con la cantidad de resultados, y solo quiero darle un estilo diferente del elemento de la lista desplegable. Hay un atributo llamado completionHintView en el componente, pero cada vez que le doy un diseño que definí previamente arroja un NullPointerException.

¿Alguien tiene un ejemplo práctico sobre cómo diseñar la sugerencia de finalización?

+0

Parece que nadie tiene un ejemplo :) ¿Quieres mostrar un código así que tal vez podamos solucionarlo y ver qué sucede? –

Respuesta

5

¿Puede dar más detalles sobre qué tipo de estilo está buscando aplicar?

Si solo se trata de un estilo de texto básico, probablemente podría compilar un Spannable y establecer la sugerencia de finalización con el resultado, ya que acepta un CharSequence. Se ilustra un ejemplo de creación de un Spannable y aplicación de estilos en this post.

Si usted está buscando una manera de manipular realmente los parámetros de la (por ejemplo, relleno) TextView, la source code de AutoCompleteTextView parece proporcionar una sugerencia (nunca mejor dicho).

private View getHintView(Context context) { 
    if (mHintText != null && mHintText.length() > 0) { 
     final TextView hintView = (TextView) LayoutInflater.from(context).inflate(
       mHintResource, null).findViewById(com.android.internal.R.id.text1); 
     hintView.setText(mHintText); 
     hintView.setId(HINT_VIEW_ID); 
     return hintView; 
    } else { 
     return null; 
    } 
} 

Esto revela que Android busca la ID text1 en la referencia de los recursos que se especifique. La versión más básica de un recurso tan contendría nada más que un TextView con este id:

<?xml version="1.0" encoding="utf-8"?> 
    <TextView xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@android:id/text1" android:layout_width="wrap_content" 
     android:layout_height="wrap_content" android:padding="10dp" 
     android:textColor="#FF0000" android:textSize="16sp" /> 

Guardar anterior en un archivo de diseño (por ejemplo completion_hint_view.xml) y hacer referencia a ella como se deduce de su AutoCompleteTextView:

<AutoCompleteTextView android:id="@+id/autocomplete_textview" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:completionHintView="@layout/completion_hint_view"/> 

Esta segunda opción es probablemente la más fácil de usar y le dará acceso completo a los parámetros de TextView. Si necesita aplicar varios estilos al texto en esta vista, puede incorporar la primera sugerencia, ya que eso le dará más flexibilidad.

Si ninguna de estas sugerencias es suficiente, puedo pensar en algunas soluciones menos elegantes que probablemente le permitan obtener el mismo resultado.

Cuestiones relacionadas