2011-01-29 25 views
11

En una aplicación de Android, ¿es posible abrir la ventana emergente de la rueda giratoria desde un clic de botón en lugar de presionar la ruleta real?Android: Open Spinner desde el botón

He intentado lo siguiente:

Button btnChange = (Button)findViewById(R.id.btnChange); 
      btnChange.setOnClickListener(new View.OnClickListener() { 
        public void onClick(View v) { 
        Spinner mySpinner = (Spinner) findViewById(R.id.sSpinner); 
        mySpinner.showContextMenu(); 
        } 
       }); 

Respuesta

-7

En una aplicación para Android, es posible abrir la ventana emergente spinner de un clic de botón en lugar de pulsar el control de giro real?

Aparentemente no. No veo un método en el SDK que parezca activar la lista emergente.

En mi humilde opinión, eso es algo bueno: lo que sea que intentes lograr probablemente se pueda hacer de otra manera que sea menos confusa para los usuarios.

57

Lo siento por la respuesta tardía - es posible:

((Spinner) findViewById(R.id.mySpinner)).performClick(); 
+29

Nunca es demasiado tarde para responder: http://xkcd.com/979/ –

+3

@Zeratul, performClick llamadas directamente onItemSelected método de la ruleta, ¿verdad? ¿Hay alguna manera en que podamos mostrar el marcador en otra vista al hacer clic en OnClick y onItemSelected después de que seleccionamos un elemento? – Khobaib

14

Es posible, sólo lo llama menú emergente, no spinner.

ImageView imageView = (ImageView) findViewById(R.id.image); 
     imageView .setOnClickListener(new OnClickListener(){ 
      PopupMenu pum = new PopupMenu(this, findViewById(R.id.image)); 
      pum.inflate(R.menu.image_chooser_popup); 
      pum.show(); 

      }); 
} 

Su spinner (o emergentes) artículos va a R.menu.image_chooser_popup:

<menu xmlns:android="http://schemas.android.com/apk/res/android" > 

<item 
    android:title="take a picture" 
    android:titleCondensed="camera" 
    android:visible="true" 
    android:onClick="cameraIntent" /> 
<item 
    android:title="choose picture from gallery" 
    android:titleCondensed="string" 
    android:visible="true" 
    android:onClick="galleryIntent"/> 

Hope éste ayuda a alguien. Si tiene algún problema con mi respuesta, por favor llámeme gratis para preguntar.

5

prueba este:

Spinner mySpinner = (Spinner) findViewById(R.id.sSpinner); 
Button btnChange = (Button)findViewById(R.id.btnChange);  
btnChange.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View view) { 
        mySpinner.performClick(); 
       } 
      }); 
Cuestiones relacionadas