Android: Open Spinner от кнопки

В приложении Android можно открыть всплывающее окно с помощью нажатия кнопки, а не нажимать фактический счетчик?

Я пробовал следующее:

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

Ответ 1

В приложении Android можно открыть всплывающее окно с помощью нажатия кнопки, а не нажимать фактический счетчик?

По-видимому, нет. Я не вижу метода в SDK, который, казалось бы, вызывает всплывающий список.

ИМХО, это хорошо - все, что вы пытаетесь выполнить, возможно, может быть сделано каким-то другим способом, который будет менее запутанным для пользователей.

Ответ 2

Извините за поздний ответ - возможно:

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

Ответ 3

Возможно, вы просто вызываете это всплывающее меню, а не 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();

          });
}

Элементы Spinner (или всплывающие) идут в 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"/>

Надеюсь, это поможет кому-то. Если у вас есть какие-либо проблемы с моим ответом, заполните, пожалуйста, вопрос.

Ответ 4

Попробуйте следующее:

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