Cómo agregar una pista en spinner en XML

Estoy tratando de añadir una pista en el widget spinner, ya que no hay opción de Sugerencia como en EditText , quiero mostrar género como una pista y cuando se hace clic en que debe mostrar sólo masculino y femenino no la pista.

Cómo se puede hacer sólo con XML

Código XML de spinner.

  <Spinner android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/spinner1" android:entries="@array/gender" android:layout_marginTop="10dp" android:layout_marginLeft="25dp" android:layout_marginRight="25dp" android:layout_gravity="center_horizontal" /> 

String Array de la hiladora

 <string-array name="gender"> <item>Male</item> <item>Female</item> </string-array> 

Hay dos maneras en que puedes usar el spinner:

Forma estática

 android:spinnerMode="dialog" 

Y luego establecer:

 android:prompt="Gender" 

Forma dinámica

 spinner.setPrompt("Gender"); 

¡Que ayude!

En el adaptador puede configurar el primer elemento como deshabilitado. A continuación se muestra el código de ejemplo

  @Override public boolean isEnabled(int position){ if(position == 0) { // Disable the first item from Spinner // First item will be use for hint return false; } else { return true; } } 

Y establecer el primer elemento a color gris.

  @Override public View getDropDownView(int position, View convertView, ViewGroup parent) { View view = super.getDropDownView(position, convertView, parent); TextView tv = (TextView) view; if(position == 0){ // Set the hint text color gray tv.setTextColor(Color.GRAY); } else { tv.setTextColor(Color.BLACK); } return view; } 

Y si el usuario selecciona el primer elemento, entonces no haga nada.

 @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { String selectedItemText = (String) parent.getItemAtPosition(position); // If user change the default selection // First item is disable and it is used for hint if(position > 0){ // Notify the selected item text Toast.makeText (getApplicationContext(), "Selected : " + selectedItemText, Toast.LENGTH_SHORT) .show(); } } 

Consulte el siguiente enlace para más detalles.

Cómo añadir una pista a Spinner en Android

Paso 1:

Su matriz parece. Último elemento su pista

Ejemplo: private String [] yourArray = new String [] {"Staff", "Student", "Your Hint"};

Paso 2:

Crear HintAdpater.java (Sólo copiar y pegar)

Esta clase no devolverá el último elemento .. Por lo tanto, su sugerencia no se muestra.

HintAdapter.java

 package ajax.com.vvcoe.utils; import android.content.Context; import android.widget.ArrayAdapter; import java.util.List; public class HintAdapter extends ArrayAdapter<String> { public HintAdapter(Context context, int resource) { super(context, resource); } public HintAdapter(Context context, int resource, int textViewResourceId) { super(context, resource, textViewResourceId); } public HintAdapter(Context context, int resource, String[] objects) { super(context, resource, objects); } public HintAdapter(Context context, int resource, int textViewResourceId, String[] objects) { super(context, resource, textViewResourceId, objects); } public HintAdapter(Context context, int resource, List<String> objects) { super(context, resource, objects); } public HintAdapter(Context context, int resource, int textViewResourceId, List<String> objects) { super(context, resource, textViewResourceId, objects); } @Override public int getCount() { // don't display last item. It is used as hint. int count = super.getCount(); return count > 0 ? count - 1 : count; } } 

Paso 3:

Establecer el adaptador giratorio de esta manera

  HintAdapter hintAdapter=new HintAdapter(this,android.R.layout.simple_list_item_1,yourArray); yourSpinner.setAdapter(hintAdapter); // show hint yourSpinner.setSelection(hintAdapter.getCount()); 

Crédito va a @Yakiv Mospan de esta respuesta – https://stackoverflow.com/a/22774285/3879847

Modifico algunos cambios solamente ..

prueba esto

 spinner1.setPrompt("Your choice"); 

El truco es esta línea

 ((TextView) view).setTextColor(ContextCompat.getColor(mContext, R.color.login_input_hint_color)); 

Utilizarlo en el onItemSelected. Aquí está mi código con más contexto

 List<String> list = getLabels(); // First item will be the placeholder ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(mContext, android.R.layout.simple_spinner_item, list); dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinner.setAdapter(dataAdapter); spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { // First item will be gray if (position == 0) { ((TextView) view).setTextColor(ContextCompat.getColor(mContext, R.color.login_input_hint_color)); } else { ((TextView) view).setTextColor(ContextCompat.getColor(mContext, R.color.primary_text)); } } @Override public void onNothingSelected(AdapterView<?> parent) { } }); 

Si su Spinner no es compatible con android: prompt, debe usar android.support.v7.widget.AppCompatSpinner en su lugar.

 <android.support.v7.widget.AppCompatSpinner android:layout_width="match_parent" android:layout_height="wrap_content" android:prompt="Gender" /> 

Intente usar la siguiente propiedad:

 android:prompt="Gender" 
  • Pantalla Android Parpadea en mostrar / ocultar barras del sistema
  • Error: Android-XML: Colocar un <WebView> en un elemento padre que utiliza un tamaño wrap_content puede llevar a errores sutiles; Utilizar match_parent
  • Cambiar la transición de navegación igual que Volver o Cerrar
  • TextView Hyperlink no funciona?
  • Android: ¿Es posible usar string / enum en el selector drawable?
  • Número máximo de selecciones MultiSelectListPreference Android
  • Duplicar valor en el encabezado de NavigationView después de actualizar el texto del encabezado
  • Utilizar el prefijo de Android en xml (android :, app :, @ .., ...)
  • XML de Android: se desplaza entre campos EditText
  • Leer de forma programada Estado de depuración en Manifest
  • Biblioteca Java usando selectores css para analizar XML
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.