2009-12-12 19 views

risposta

23

Solo per rimuovere i pulsanti di opzione, non è necessaria la propria classe di adattatori.

Creare un dropdown_item.xml nel layout

<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" /> 

quindi effettuare la seguente chiamata nel codice.

arrayAdapter.setDropDownViewResource(R.layout.dropdown_item); 

L'elemento di selezione a discesa di selezione predefinita è CheckedTextView con il pulsante di opzione. Qui lo sostituisci con TextView.

+0

Bello e semplice! – Bruiser

+0

È 'android: id =" @ android: id/text1 "' opzionale? – cprcrack

4

Se si desidera eliminare i pulsanti di opzione nell'elenco di selezione, è necessario fornire il proprio layout per riga.
Date un'occhiata al seguente esempio:


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);   
     } 

    } 
} 


Il layout personalizzato per fila Spinner è solo un semplice LinearLayout con un elemento TextView quale ID è "text" (android: id = "@ + id/text ")

Questo è solo un semplice esempio. Se hai bisogno di un layout più elaborato rispetto a TextView, probabilmente dovrai sovrascrivere il metodo getView() di MySpinnerAdapter.

5

È possibile utilizzare il layout di Android

android.R.layout.simple_spinner_item 

invece di

android.R.layout.simple_spinner_dropdown_item 

ma vi consiglio @kimkunjj risposta, che vi darà il controllo del layout.

1

"android.R.layout.simple_spinner_item" fa il lavoro,

di programmazione che è:

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

Il modo "pulito" di fare questo (è sufficiente rimuovere il segno di spunta e non tocco anythinbg altro tra cui lo stile del testo, dimensione elemento ecc) è quello di creare adattatore personalizzato (come nelle risposte di cui sopra):

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; 
    } 
} 

si prega di notare la getDropDownView() metodo che restituisce la vista per l'elemento dell'elenco a discesa. È possibile utilizzare qualsiasi vista personalizzata qui, ma se si desidera attenersi alla visualizzazione predefinita si dovrebbe probabilmente utilizzare il codice precedente.

1

Se è stata inclusa la libreria di supporto di Android versione 18 o successiva nel progetto, è possibile sostituire l'ID risorsa simple_spinner_dropdown_item con support_simple_spinner_dropdown_item. Ciò rimuoverà il pulsante di opzione.

1

uso simple_dropdown_item_1line

Problemi correlati