如何隐藏微调下拉列表

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

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

Related of "如何隐藏微调下拉列表"

那么它比我想象的有点复杂。

我在这里添加一步一步的细节。 尝试遵循它。 我能够在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微调程序