2009-12-12 48 views

Respuesta

23

Solo para quitar los botones de opción, no necesita su propia clase de adaptador.

Crear una dropdown_item.xml en la disposición

<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@android:id/text1" 
    style="?android:attr/spinnerDropDownItemStyle" 
    android:singleLine="true" 
    android:layout_width="fill_parent" 
    android:layout_height="?android:attr/listPreferredItemHeight" 
    android:ellipsize="marquee" /> 

continuación, active lo siguiente en el código.

arrayAdapter.setDropDownViewResource(R.layout.dropdown_item); 

El elemento desplegable de girador predeterminado es un CheckedTextView que tiene el botón de opción. Aquí lo reemplaza con un TextView.

+0

¡Bonito y simple! – Bruiser

+0

Es 'android: id =" @ android: id/text1 "' opcional? – cprcrack

4

Si desea deshacerse de los botones de opción de la lista de referencias, debe proporcionar su propio diseño para la fila.
Tome una mirada en el siguiente ejemplo:


package com.ramps; 

import android.app.Activity; 
import android.content.Context; 
import android.os.Bundle; 
import android.widget.ArrayAdapter; 
import android.widget.Spinner; 
import android.widget.SpinnerAdapter; 

public class MySpinner extends Activity { 
    //data that will be used as a spinner options 
    private static String data[] = {"one", "two", "three"}; 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     //main.xml file contains spinner 
     setContentView(R.layout.main); 
     Spinner spinner = (Spinner) findViewById(R.id.spinner); 
     //create your own adapter 
     MySpinnerAdapter adapter = new MySpinnerAdapter(this,R.layout.custom_spinner_row,R.id.text, data); 
     //set your custom adapter 
     spinner.setAdapter(adapter); 
    } 


    private class MySpinnerAdapter extends ArrayAdapter{ 

     public MySpinnerAdapter(Context context, int resource, 
       int textViewResourceId, String[] objects) { 
      super(context, resource, textViewResourceId, objects);   
     } 

    } 
} 


El diseño personalizado para la fila spinner es sólo un LinearLayout sencillo con un elemento de Vista de Texto, que id es "texto" (android: id = "@ + ID/text ")

Esto es solo un ejemplo simple. Si necesita un diseño más elegante que simplemente TextView, probablemente tenga que anular el método getView() de MySpinnerAdapter.

5

Usted puede utilizar el diseño androide

android.R.layout.simple_spinner_item 

en lugar de

android.R.layout.simple_spinner_dropdown_item 

pero recomiendo @kimkunjj respuesta, se le dará el control de la disposición.

1

"android.R.layout.simple_spinner_item" hace el trabajo,

programación es:

modeSpinner=new Spinner(layout.getContext()); 
ArrayAdapter<String> arrayAdapter=new ArrayAdapter<String>(layout.getContext(),  
    android.R.layout.simple_spinner_item, Arrays.asList(modes)); 
arrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_item); 
0

La forma "más limpia" de hacer esto (acaba de quitar la marca de verificación y no táctil anythinbg demás incluyendo el estilo del texto, tamaño del artículo, etc.) es la creación de adaptador personalizado (como en las respuestas anteriores):

public class SimpleSpinnerArrayAdapter extends ArrayAdapter<String> { 

    public SimpleSpinnerArrayAdapter(Context context, String[] data) { 
     super(context, android.R.layout.simple_spinner_item, data); 
     this.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
    } 

    public SimpleSpinnerArrayAdapter(Context context, List<String> data) { 
     super(context, android.R.layout.simple_spinner_item, data); 
     this.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
    } 

    /** 
    * Returns default dropdown view with removed checkbox 
    */ 
    public View getDropDownView(int position, View convertView, ViewGroup parent) { 
     View view = super.getDropDownView(position, convertView, parent); 
     if (view != null && view instanceof CheckedTextView) { 
      ((CheckedTextView) view).setCheckMarkDrawable(null); 
     } 
     return view; 
    } 
} 

Tenga en cuenta la getDropDownView() método que devuelve la vista para el elemento de la lista desplegable. Puede usar cualquier vista personalizada aquí, pero si desea seguir con la vista predeterminada, probablemente debería usar el código anterior.

1

Si ha incluido la biblioteca de soporte de android versión 18 o superior en su proyecto, puede reemplazar el id. De recurso simple_spinner_dropdown_item con support_simple_spinner_dropdown_item. Eso eliminará el botón de radio.

1

uso simple_dropdown_item_1line

Cuestiones relacionadas