android - 当同时单击组 View 中的两个时,关闭 Spinners 下拉菜单

标签 android spinner simultaneous-calls

我的 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/

相关文章:

android - RecyclerView 右滑添加图标

java - 如何从微调器中检索选定的值并在另一个类中使用它? - 安卓

android - 将微调器值右对齐而不是左对齐

google-apps-script - '异常: Too many simultaneous invocations: Spreadsheets' - Is it because I am opening spreadsheets in a loop?

php - 允许运行 php 脚本的多个实例

javascript - 未定义不是 this.state 中的对象 - React Native

Android Studio 模拟器符号未找到 : _pwritev

android - 如何隐藏微调器下拉菜单android

php - file_exists 和使用特定名称 (php) 保存文件之间会发生什么?

java - 变压器异常 : Unknown Error In XPath