2011-01-29 14 views
11

Czy w aplikacji dla systemu Android można otworzyć okienko z kliknięciem przycisku zamiast naciskać rzeczywistą tarczą?Android: Open Spinner od Button

Próbowałem następujące:

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

Odpowiedz

-7

W aplikacji Android, jest to możliwe, aby otworzyć okienko pokrętła od kliknięcia przycisku zamiast naciskania rzeczywistej tarczy?

Najwyraźniej nie. Nie widzę metody w SDK, które wydaje się powodować wyskakujące listy.

IMHO, to dobrze - cokolwiek starasz się osiągnąć, można prawdopodobnie zrobić w inny sposób, który będzie mniej kłopotliwy dla użytkowników.

57

Przepraszam za późną odpowiedź - to możliwe:

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

Nigdy nie jest zbyt późno, aby odpowiedzieć: http://xkcd.com/979/ –

+3

@Zeratul, performClick bezpośrednio wywołuje metodę onItemSelected turbinki, prawda? Czy jest jakiś sposób, aby pokazać spinner w innym widoku onClick i onItemSelected zostanie wywołany po wybraniu elementu? – Khobaib

14

Jest możliwe, po prostu nazwać to menu podręczne, a nie pokrętła.

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

      }); 
} 

Twój tarczy (lub popup) pozycje idzie 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"/> 

Nadzieja ta pomaga kogoś. Jeśli masz jakiekolwiek problemy z moją odpowiedzią, wypełnij bezpłatny, aby zapytać.

5

Spróbuj tego:

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