我有几个下拉(旋转器)在我的Android ViewGroup。
当我尝试同时点击其中两个时,它们都打开了。然而,Android的默认行为是,如果一个旋转器被打开,你在某个地方点击,它会被关闭:监听器中的Nothing Selected会在Item Selected listener上被调用。
我想,同时点击两个旋转器,它们都不应该被打开。然而,在单个选择(只有一个旋转器),它应该正常工作。
假设有两个旋转器,在两个上都应用触摸监听器。或者适配器中的getView()就足够了(不是getDropDownView),但是您希望在同一空间中处理它们。
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
// Toast.makeText(getActivity(), v + " touched",
// Toast.LENGTH_LONG).show();
try {
ActionBarActivity context = (ActionBarActivity) getActivity();
if (context == null) {
// Log.d(tag, "OnTouch spinner context: " + context);
return false;
}
if (main_layout == null) {
return false;
}
int i = v.getId();
switch (i) {
case R.id.spinner1: {
Spinner spnTemp = null;
spnTemp = (Spinner) main_layout.findViewById(R.id.spinner2);
if (spnTemp != null) {
// spnTemp.setSelected(false);
// Log.d(tag, "OnTouch spinner spnTemp.isPressed(): " + spnTemp.isPressed());
if (spnTemp.isPressed()) {
spnTemp.setPressed(false);
}
}
}
break;
case R.id.spinner2: {
Spinner spnTemp = null;
spnTemp = (Spinner) main_layout.findViewById(R.id.spinner1);
if (spnTemp != null) {
// spnTemp.setSelected(false);
// Log.d(tag, "OnTouch spinner spnTemp.isPressed(): " + spnTemp.isPressed());
if (spnTemp.isPressed()) {
spnTemp.setPressed(false);
}
}
}
break;
}
} catch (Exception e) {
Log.e(tag, "OnTouch spinner exception");
}
return false;
}