代码之家  ›  专栏  ›  技术社区  ›  andy_spoo

Android-如何判断是否有人按下了旋转器,但没有更改其中的可见项

  •  3
  • andy_spoo  · 技术社区  · 16 年前

    我有一个旋转器,大部分都能用。如果用户选择其中一个项目,则“onitemselected”例程将捕获该项目。

    但是,如果用户单击同一个微调器,但与当前显示的已可见项没有变化,“onitemselected”例程将忽略它,并且日志显示:

    warn/inputmanagerservice(577):窗口已经聚焦,忽略:com.android.internal.view.iinputmethodclient$stub$proxy@437948b0的聚焦增益。

    我在那里抓到一个这样做的人?其思想是我的微调器包含一个名称列表,当用户从微调器中选择一个名称时,它将被添加到列表视图中。

    我可以添加另一个按钮从微调器中获取名称,但屏幕空间已经不足,我不想再添加内容。

    4 回复  |  直到 14 年前
        1
  •  0
  •   softarn    16 年前

    从未使用微调器,但是否可以在OnitemSelected例程中重置微调器位置?以某种表示“请选择”或其他内容的空值。

        2
  •  2
  •   Mike Aski    14 年前

    这个问题可以通过重写来解决 Spinner.onClick() ,但这是安卓3.0及更高版本的Buggy( Spinner.onClick() is called on 2.2 device, not called on 3.0 device )

    所以最好的解决办法是 AlertDialog.Builder 正如AdAMP所说的。

    AlertDialog.Builder builder = new Builder(this);
    // maybe get from resources 
    CharSequence titles[] = getResources().getTextArray(R.array.titles);
    builder.setItems(titles, new DialogInterface.OnClickListener() {
      @Override
      public void onClick(DialogInterface dialog, int which) {
        // add your code here               
      }
    });
    builder.create().show();
    
        3
  •  1
  •   adamp    16 年前

    听起来你不想要一个旋转器,你只是用它来弹出对话框。您可以创建自己的简单弹出对话框,就像spinner使用的那样(可能是在您的用户界面中单击“添加”按钮的结果?)通过使用 AlertDialog.Builder . 旋转器使用 setSingleChoiceItems 然后 show 关于一个 警报对话框.builder 向用户展示其选择。

        4
  •  0
  •   Andrey    16 年前

    你看过吗 setOnItemClickListener ?如果你实现你自己的 AdapterView.OnItemClickListener 把它作为论点传给 mySpinner.setOnItemClickListener 方法可以获取选定项在 onItemClick 方法