我的 Android ViewGroup 中有几个下拉菜单(Spinners)。
当我尝试同时单击其中两个时,它们都打开了。然而,Android 中的默认行为是,如果微调器处于“打开”状态并且您在某处单击它,它就会关闭:在 Item Selected Listener 上调用 Nothing Selected in the listener。
我想,在同时点击两个 Spinners 时,它们都不应该被打开。但是,在单次选择(仅限一个 Spinner)时,它应该可以正常工作。
最佳答案
假设有两个微调器,在两者上都应用触摸监听器。或者适配器中的 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;
}
关于android - 当同时单击组 View 中的两个时,关闭 Spinners 下拉菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24116724/