Pregunta

En Android 1.6, al tocar una ruleta (menú desplegable), botones de radio aparecen junto a las opciones de pico largo. ¿Cómo se quita los botones de selección de manera que sólo el texto de la opción queda?

¿Fue útil?

Solución

Sólo para quitar los botones de radio, que no necesita su propia clase adaptador.

Crear un dropdown_item.xml en diseño

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

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

arrayAdapter.setDropDownViewResource(R.layout.dropdown_item);

El elemento giratorio desplegable por defecto es una CheckedTextView que tiene el botón de radio. Aquí se sustituya por un TextView.

Otros consejos

Puede utilizar el diseño androide

android.R.layout.simple_spinner_item 

en lugar de

android.R.layout.simple_spinner_dropdown_item

@kimkunjj respuesta, que le dará el control de la disposición.

Si desea deshacerse de botones de radio en la lista de ruleta que tiene que proporcionar su propio diseño para la fila.
Echar un vistazo al 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 = "@ + / Identificación del texto")
Esto es sólo ejemplo sencillo. Si necesita diseño más elegante que un simple TextView es probable que tenga que reemplazar el método de MySpinnerAdapter getView ().

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

programación que 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);

Si ha incluido el apoyo androide biblioteca de la versión 18 o superior en su proyecto a continuación, puede reemplazar el simple_spinner_dropdown_item Identificación del recurso con support_simple_spinner_dropdown_item. Eso va a quitar el botón de radio.

uso simple_dropdown_item_1line

La forma "más limpia" de hacer esto (acaba de quitar la marca de verificación y no toca anythinbg demás incluyendo el estilo del texto, tamaño del artículo, etc.) es crear 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 el método getDropDownView() que devuelve la vista de elemento de la lista desplegable. Se puede utilizar cualquier vista personalizada aquí, pero si desea que se adhieren a la vista por defecto que es mejor usar el código de seguridad.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top