如何隐藏微调下拉列表

我想隐藏微调提示popup外部点击。 如果提示popup窗口打开,并且用户按回家键活动将最小化,所以当用户再次打开提示popup窗口消失的应用程序时。
有没有办法做到这一点。 谢谢

编辑: – 提示popup不定制。 所以我不能将它们隐藏在onPauseonResume方法中。

  • 如何移动Android微调器下拉箭头更接近它的发光文字
  • 更改工具栏中的微调器样式
  • 如何在Android中限制Spinner下拉视图的高度
  • 像使用appcompat v21的微调器一样调整TextView
  • 带有多行项目的微调项目与Froyo上的选定项目显示重叠
  • 设置视图文本在android中的微调器中心对齐
  • 在旋转器下降时捕获事件被解除
  • Spinner.setSelection不会正确触发OnItemSelectedListener
  • 那么它比我想象的有点复杂。

    我在这里添加一步一步的细节。 尝试遵循它。 我能够在api level 10中实现这一点。

    此解决scheme假定您应该在用户单击主页button时以编程方式closures提示对话框,或者如果必须在没有用户交互的情况下移动到下一个活动

    第一步是通过扩展Sp​​inner类来创build自定义微调器。 比方说,我已经在包com.bts.sampleapp中创build了一个名为CustomSpinner的类

    我的CustomSpinner类看起来像这样,

     package com.bts.sampleapp; import android.content.Context; import android.util.AttributeSet; import android.widget.Spinner; public class CustomSpinner extends Spinner{ Context context=null; public CustomSpinner(Context context) { super(context); this.context=context; } public CustomSpinner(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } public CustomSpinner(Context context, AttributeSet attrs) { super(context, attrs); } @Override public void onDetachedFromWindow() { super.onDetachedFromWindow(); } } 

    现在在你的Xml文件中,用这个自定义微调器代替Spinner元素,

      <com.bts.sampleapp.CustomSpinner android:id="@+id/spin" android:layout_width="wrap_content" android:layout_height="wrap_content" /> 

    下一步是在你的Activity类中初始化并设置适配器到这个微调器,

      @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); CustomSpinner spin=null; spin=(CustomSpinner)findViewById(R.id.spin); spin.setAdapter(spinnerAdapter); //you can set your adapter here. } 

    最后一步是当用户点击HomeButton或当Activity移动到后台时closures对话框。 要做到这一点,我们重写像这样的onPause()

     @Override protected void onPause() { Log.i("Life Cycle", "onPause"); spin.onDetachedFromWindow(); super.onPause(); } 

    现在在onPause()内调用方法spin.onDetachedFromWindow(); 这为您closures提示对话框的工作。

    也调用spin.onDetachedFromWindow(); Acitivity中的任何位置如果打开,应该closuresSpinner提示对话框。

    根据Andro的回答,您可能更喜欢reflection能够调用onDetachedFromWindow的受保护的方法。 那么你就不需要微调Spinner,调整布局等。

     /** * Hides a spinner's drop down. */ public static void hideSpinnerDropDown(Spinner spinner) { try { Method method = Spinner.class.getDeclaredMethod("onDetachedFromWindow"); method.setAccessible(true); method.invoke(spinner); } catch (Exception e) { e.printStackTrace(); } } 
    • 您可以popup作为对话框主题的活动
    • 覆盖onPause方法。

      保护无效onPause(){super.onPause(); this.finish(); }

    spinner.clearFocus();

    这是简单的线路来closures微调程序