Android:从Button打开Spinner

Zen*_*eno 11 android button 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();
                  }
                });
Run Code Online (Sandbox Code Playgroud)

zer*_*021 59

对不起,迟到的答案 - 这是可能的:

((Spinner) findViewById(R.id.mySpinner)).performClick();
Run Code Online (Sandbox Code Playgroud)

  • @Zeratul,performClick直接调用微调器的onItemSelected方法,对吗?我们有没有办法在另一个视图上显示微调器的onClick&onItemSelected将在我们选择一个项目后被调用? (3认同)

Def*_*era 14

有可能,你只需将其称为弹出菜单,而不是微调器.

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

          });
}
Run Code Online (Sandbox Code Playgroud)

您的微调器(或弹出)项目转到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"/>
Run Code Online (Sandbox Code Playgroud)

希望这个帮助一个人.如果您对我的回复有任何问题,请填写免费询问.


小智 7

试试这个:

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();
                }
            });
Run Code Online (Sandbox Code Playgroud)